客户端是否可以在收到套接字数据时发送它 断开连接(用户关闭浏览器或标签)? 因为,我发现断开连接上的默认绑定不接受任何输入数据。
//on server side
socket.on('disconnect',function(){
//in other binds, it takes 'data' as an input but this does not
});
我试图通过使用jQuery的卸载方法来解决这个问题 如下所示
//on client side
$(window).unload(function(){
socket.emit('depart','I am leaving');
});
然而,在卸载时似乎根本没有发射。 (也许socket
在卸载时超出范围?)
当客户端断开连接时,有没有办法通过websocket将数据发送到服务器?
其次,有什么办法可以在socket中存储字符串数据吗?例如,
socket.userName = userNameVar;
- update-- 以下是我在服务器端设置环境的方法
io.sockets.on('connection',function(socket){
socket.on('depart',function(data){
console.log(data);
console.log("user left");
});
socket.on('disconnect',function(){
console.log("user disconnected");
});
});
以下代码在客户端。
var socket = io.connect(hostVar);
$(window).unload(function(){
socket.emit('depart','I am leaving');
});
答案 0 :(得分:1)
您无法在断开连接时发送数据的原因是因为您已断开连接。你问的问题有点类似于说“我们挂断电话后,我还能和电话里的人说话吗?”
如果你想发出'离开'事件,那么你仍然必须在服务器端的'connect'处理程序中捕获它:
如:
io.socket.on('connection', function(socket) {
socket.on('depart', function(msg) {
// you should get depart message here
});
})
您的离开活动将在连接终止之前到来。断开连接仅在服务器成功断开连接时引发,因此无法接收任何消息。
尝试一下,告诉我这是否有效:)
答案 1 :(得分:0)
改为使用
var len = someJsonArray.length, output = [];
for(var i = 0; i < len; i++){
output.push(someJsonArray[i].id)
}
console.log(output);
并在服务器端
$(window).on('beforeunload',()=>{
socket.emit('page_unload');
});