81,094
社区成员
发帖
与我相关
我的任务
分享
try {
var url = "<%=webserviceUrl%>";
if ('WebSocket' in window) {
socket = new WebSocket(url);
} else if ('MozWebSocket' in window) {
socket = new MozWebSocket(url);
}
} catch (e) {
console.warn(e);
}
//连接成功时触发
socket.onopen = function(){
socket.send("HEARTBEATRESPONSE");
//socket.send("connected successful...");
};
//监听收到的消息
socket.onmessage = function(res){
alert("onmessage receiver msg:"+res.data);
//alert("onmessage:"+res);
if(res=="HEARTBEATREQUEST")
socket.send("HEARTBEATRESPONSE");
};
// 监听Socket的关闭
socket.onclose = function(event) {
//alert('Client notified socket has closed',event);
console.debug("receiver msg:"+event);
};
socket.onerror=function(event){
console.error("receiver error msg:"+event);
};
});
public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception {
boolean isHandshakeResponse = message instanceof String;
// boolean isHandshakeResponse = message instanceof WebSocketHandShakeResponse;
boolean isDataFramePacket = message instanceof WebSocketCodecPacket;
boolean isRemoteWebSocket = session.containsAttribute(WebSocketUtils.SessionAttribute) && (true==(Boolean)session.getAttribute(WebSocketUtils.SessionAttribute));
IoBuffer resultBuffer;
if(isHandshakeResponse){
// WebSocketHandShakeResponse response = (WebSocketHandShakeResponse)message;
// resultBuffer = WebSocketEncoder.buildWSResponseBuffer(response);
resultBuffer = IoBuffer.allocate(((String)message).getBytes().length, false);
resultBuffer.setAutoExpand(true);
resultBuffer.put(((String)message).getBytes());
resultBuffer.flip();
}
else if(isDataFramePacket){
WebSocketCodecPacket packet = (WebSocketCodecPacket)message;
resultBuffer = isRemoteWebSocket ? WebSocketEncoder.buildWSDataFrameBuffer(packet.getPacket()) : packet.getPacket();
}
else{
throw (new Exception("message not a websocket type"));
}
out.write(resultBuffer);
}