以下是我的Websocket訂閱代碼。如何在Javax.websocket上從Websocket訂閱者(客戶端)讀取json請求?
客戶端:
var request = '{"sessionId": "_fjuhdf896786767", "username":"admin", "status":true}'
ws = new WebSocket(wsUri);
console.log("registered");
ws.onopen = function() {
console.log("connection opened!")
ws.send(request);
}
ws.onmessage = function(msg) {
console.log("received message:");
window.getData(JSON.parse(msg.data));
}
在服務器端,網頁套接字的implementioation低於:
@ServerEndPoint(value="/status")
public class WebsocketServer {
@OnOpen
public void OpenMsg(Session session, EndpointConfig cnfg) {
String retdata = "";
try {
if (session.isOpen()) {
log.info("OpenMsg() payload req data from client" + decoder);
retdata = getCount(decoder);
log.info("OpenMsg() retdata " + retdata);
session.getBasicRemote().sendText(retdata.toString());
try {
Thread.sleep(pollinterval);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} catch (IOException e) {
try {
session.close();
log.error("Exception occured while Opening WS Session");
e.printStackTrace();
} catch (IOException e1) {
// Ignore
}
}
}
}
我想知道如何從「ws.send讀取JSON請求字符串(請求);」在服務器端(javax.websocket)。 我看到了編碼器和解碼器,但在這種情況下,我只發送json請求作爲一個字符串,不編碼如上所示。 任何機構可以告訴我,如何讀取json字符串作爲Javax.websocket中的有效載荷。
你好謝謝@ASE,我想獲得它在JavaScript客戶端使用「ws.send(MSG)」中的OnOpen方法 –
對不起,我不能完全理解你的觀點發送是java的WebSocket服務器味精:'ws.onopen'發送的消息被'@ OnMessage'服務器端捕獲,因爲連接已經建立。反過來說,如果你通過'@ OnOpen'服務器端發送了一條消息,它將由'ws.onmessage'客戶端處理 – Al1