0
我有非常簡單的代碼,但它並不完美。
在Java服務器,它只是說你好和再見打開和關閉連接時,並打印發送的消息:WebSocket - Javascript客戶端說連接,但Java服務器不
@ApplicationScoped
@ServerEndpoint("/tictactoe")
public class WebSocketServer {
private Logger logger = Logger.getLogger(this.getClass().getName());
@OnOpen
public void open(Session session) {
logger.info("WebSocket: Hello - " + session.getId());
}
@OnClose
public void close(Session session) {
logger.info("WebSocket: Farewell - " + session.getId());
}
@OnMessage
public void messageHandler(String message, Session session) {
logger.info("WebSocket: New Message - " + message);
}
}
在JavaScript中它幾乎相同的像在服務器併發送消息點擊一個按鈕時, :
var socket = new WebSocket("ws://localhost:8080/TicTacToeZTP/tictactoe");
socket.onopen = function (event) {
console.log("WebSocket: Connected");
console.log("WebSocket: " + checkConnection(socket.readyState));
};
socket.onclose = function (event) {
console.log("WebSocket: Disconnected");
};
socket.onerror = function(event) {
console.log("WebSocket: Error");
};
socket.onmessage = function (event) {
console.log("WebSocket: New Message - " + event.data);
};
function checkConnection(readyState) {
switch(readyState){
case 0: return "CONNECTING";
case 1: return "OPEN";
case 2: return "CLOSING";
case 3: return "CLOSED";
default: return "UNDEFINED";
}
}
$("#send").click(function() {
var msg = {
type: "message",
text: "zaladzi"
};
socket.send(JSON.stringify(msg));
});
現在是時候解決問題了。 刷新一頁與建立連接。
什麼腳本說:
WebSocket: Connected
WebSocket: OPEN
但是服務器不打開一個新的。事實上,我有時需要幾次刷新才能在服務器上打開新的連接。
什麼服務器說:
Info: WebSocket: Hello - 29538711-f815-4c59-835e-97aaaac1d112
Info: WebSocket: Farewell - 29538711-f815-4c59-835e-97aaaac1d112
我使用似鯖水狼牙魚4.1服務器。如何解決這個問題?
TL/DR 的JavaScript客戶說連接打開,但的Java客戶端說有沒有這樣的連接。