netty-socketio chat demo
所属分类 netty-socketio
浏览量 63
服务端推送技术,一般会涉及WebSocket,WebSocket是HTML5提出的规范,
虽然主流浏览器都已支持,但仍然可能有不兼容的情况,
SocketIO将WebSocket、AJAX和其它的通信方式全部封装成了统一的通信接口,
使用SocketIO时不用担心兼容问题,底层会自动选用最佳的通信方式。
netty-socketio 是一个基于 Netty 框架的 Socket.IO 服务器端实现,
它提供了丰富的功能和便利性,适合用于构建复杂的实时通信应用。
聊天场景: 即时通信
直播场景:互动、弹幕
智能家居IoT:监控、远程控制
游戏场景:互动
交通场景:位置共享
教学场景:在线白板
音视频:WebRTC信令协商
SLB长连接场景:网关
Socket.IO 是一种用于实时双向通信的 JavaScript 库,而 netty-socketio 则提供了在 Java 环境中实现这一功能的能力。
它支持多种传输方式,包括 xhr-polling 和 websocket,并且能够处理命名空间、房间、确认机制、SSL、客户端存储、OSGi、Spring 等功能。
Socket.IO
Bidirectional and low-latency communication for every platform
https://socket.io/
支持及时、双向与基于事件的交流。它可以在每个平台、每个浏览器和每个设备上工作,可靠性和速度同样稳定。
高性能
在大多数情况下,将使用WebSocket建立连接,在服务器和客户端之间提供低负载通信通道。
可靠的
连接安全!如果WebSocket连接不可能,它将返回到HTTP长轮询。如果连接丢失,客户端将自动尝试重新连接。
可扩展
将应用程序部署到多个服务器,并轻松地向所有连接的客户端发送事件。
socket.io.js
https://cdn.bootcss.com/socket.io/2.2.0/socket.io.js
com.corundumstudio.socketio.netty-socketio:1.7.7
org.slf4j:slf4j-simple:1.7.7
socket.io.js 2.0.0
com.corundumstudio.socketio.demo.ChatLauncher
com.corundumstudio.socketio.demo.ChatLauncher
import com.corundumstudio.socketio.listener.*;
import com.corundumstudio.socketio.*;
public class ChatLauncher {
private static final String HOSTNAME = "localhost";
private static final int PORT = 9092;
public static void main(String[] args) throws InterruptedException {
Configuration config = new Configuration();
config.setHostname(HOSTNAME);
config.setPort(PORT);
System.out.println("hostname="+HOSTNAME+",port="+PORT);
final SocketIOServer server = new SocketIOServer(config);
// js client code
// var jsonObject = {userName: 'tiger',message: 'hello'};
// socket.emit('chatevent', jsonObject);
server.addEventListener("chatevent", ChatObject.class, new DataListener< ChatObject >() {
@Override
public void onData(SocketIOClient client, ChatObject data, AckRequest ackRequest) {
// broadcast messages to all clients
server.getBroadcastOperations().sendEvent("chatevent", data);
}
});
server.start();
Thread.sleep(Integer.MAX_VALUE);
server.stop();
}
}
/docs/client/index.html
var userName = 'user' + Math.floor((Math.random()*1000)+1);
var socket = io.connect('http://localhost:9092');
socket.disconnect();
var jsonObject = {userName: userName,message: message};
socket.emit('chatevent', jsonObject);
https://gitee.com/dyyx/work2024/tree/master/demo/netty-socketio/netty-socketio-demo
https://github.com/mrniko/netty-socketio-demo/
上一篇
下一篇
netty-socketio 与 websocket
Flutter-MQChat 基于MQTT的现代聊天应用客户端
常用的MQTT客户端与Broker
jks pem cer pfx 证书
slf4j StaticLoggerBinder 静态绑定测试
slf4j StaticLoggerBinder 静态绑定机制