WebSocket - Javascript client says connected, but Java server doesn't -
i have simple code, yet, doesn't work perfectly.
in java server says hello , bye when opening , closing connection , prints sent message:
@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); } } in javascript pretty same in server , sends message when clicking button:
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)); }); now time problem. after refreshing page established connection.
what script says:
websocket: connected websocket: open but server doesn't open new one. in fact need couple of refreshes open new connection on server.
what server says:
info: websocket: hello - 29538711-f815-4c59-835e-97aaaac1d112 info: websocket: farewell - 29538711-f815-4c59-835e-97aaaac1d112 i'm using payara 4.1 server. how solve issue?
tl/dr javascript client says connection opened, java client says there no such connection.
this due bug in payara server fixed https://github.com/payara/payara/issues/536 in bug onopen isn't called in server when socket reused.
you try pre-release version of payara ensure fixed. pre-release builds available the payara website new pre-release build created , uploaded every time jenkins ci server completes github merge build.
Comments
Post a Comment