WebSocket与SocketIO

https://github.com/scuhzq/sokcet-io-demo

1,WebSocket

1)WebSocket和HTTP都属于应用层协议。Http是无状态的,单项通信的,服务器有消息更新不能及时通知到客户端(曾经做过类似抢购的功能,查看抢购状态就需要使用轮询)。
2)基于TCP的协议,使用http/https进行握手请求,之后切换101 Switching Protocols到ws或则wss,并创建了一条tcp连接。

WebSocket与SocketIO_第1张图片
image.png

WebSocket与SocketIO_第2张图片
image.png

3)SocketIO将WebSocket、AJAX和其它的通信方式全部封装成了统一的通信接口。

2,socket.io-client

1)socket-io js的客户端。
导入js模块,初始化socket,监听事件


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();

你可能感兴趣的:(WebSocket与SocketIO)