1) 是的。它类似于纯 websocket。但是netty-socketio:
在哪里
- 4 - 消息的数据包类型;
- 2 - 事件的内部类型;
- eventName - 事件的名称,它必须与 Java
@OnEvent 处理程序中的名称相同(见下文)。
你可以随意组织 your_data_objects,例如,写一些类似 HTTP 的东西:
42["eventName", {headers map}, data(primitive, array or object)]
42["createUser", {"requestId": "UUID"}, {
"firstName": "John",
"lastName": "Dow"
}]
42["deleteUser", {}, 10]
42["getUsers", {}, [1,2,3,4,5]]
等等
(需要传输设置);
在您的客户端和服务器之间或在服务器配置中禁用它(不推荐,它对死会话很有用)。
总之,netty-socket-io 是一个非常有用、稳定的工具,可以在生产环境中使用。
2) 绝对。您可以在 Java 后端使用 netty-socket-io。以及客户端上的 socket-io 库。甚至是纯 websocket:
var ws = new Websocket("ws://localhost:9060/socket.io/?transport=websocket");
setInterval(function(){ sendHeartbeat(); }, 5000);
function sendHeartbeat() {
ws.send("2");
}
ws.onopen = function() {
ws.send('42["doSomething", {"header1": "value1"}, {"key1": "value1"}');
}
Java:
public class Controller {
@OnEvent("doSomething")
public void doSomething(SocketIOClient client, Headers headers, Something something) {
client.sendEvent("doSomethingSuccess", null, responseHeaders, responseObject);
}
}
并在配置中路由到控制器:
server.addListeners(new Controller());
3) 遗憾的是,关于netty-socket-io的信息很少,你可以尝试一下,当你遇到麻烦时会产生新的问题;
4) 您需要将 netty-socket-io 添加到您的依赖项中。
Hazelcast 或 Redisson,如果您打算使用它们来存储会话和房间订阅。 Jackson 用于 json 序列化/反序列化。就是这样。