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]]
等
(運輸設置是必需的);
- 需要發送乒乓包
- 2 - PING,
- 3 - PONG
您的客戶端和服務器或服務器的配置(不建議禁用它之間,它是有用的爲死的會議)。
總之,網狀插槽-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)遺憾的是,有關於網狀插槽-io的信息很少,當你陷入困境時,你可以嘗試它並創造新的問題;
4)您需要將netty-socket-io添加到您的依賴項中。 Hazelcast或Redisson如果您打算使用它們來存儲會話和訂閱房間。傑克遜json序列化/反序列化。就這樣。