https://github.com/scuhzq/sokcet-io-demo
1,WebSocket
1)WebSocket和HTTP都属于应用层协议。Http是无状态的,单项通信的,服务器有消息更新不能及时通知到客户端(
曾经做过类似抢购的功能,查看抢购状态就需要使用轮询
)。
2)基于TCP的协议,使用http/https进行握手请求,之后切换101 Switching Protocols
到ws或则wss,并创建了一条tcp连接。
3)SocketIO将WebSocket、AJAX和其它的通信方式全部封装成了统一的通信接口。
2,socket.io-client
1)socket-io js的客户端。
导入js模块,初始化socket,监听事件
<script src="/socket.io/socket.io.js"></script>
var socket = io('http://localhost:3001');
socket.on('connect', function(){});
socket.on('event', function(data){});
socket.on('disconnect', function(){});
2)socket.io-client-java java客户端
初始化socket、注册监听、连接socket
compile (`io.socket:socket.io-client:1.0.0`) //引入依赖
Socket socket = IO.socket("http://localhost:3001?lessonId=1&username=" + username);
socket.on("new message", params -> {
for(int i = 0; i < params.length; i++){
System.out.println(params[i].toString());
}
});
//emit 发送消息到服务器
//on 监听来自服务器的消息
socket.on(Socket.EVENT_CONNECT, params -> {
socket.emit("add user", username);
JSONObject jsonObject = new JSONObject();
jsonObject.put("message", "你好我是" + username);
socket.emit("new message", jsonObject);
System.out.println(username + " 上线啦");
});
socket.connect();