Javascript 客户端是否有办法在套接字断开连接时发送服务器数据?
客户端在收到套接字数据时是否可以发送套接字数据 断开连接(用户关闭浏览器或选项卡)? 因为,我发现断开连接时的默认绑定不接受任何输入数据Javascript 客户端是否有办法在套接字断开连接时发送服务器数据?,javascript,socket.io,Javascript,Socket.io,客户端在收到套接字数据时是否可以发送套接字数据 断开连接(用户关闭浏览器或选项卡)? 因为,我发现断开连接时的默认绑定不接受任何输入数据 //在服务器端 socket.on('disconnect',function(){ //在其他绑定中,它将“数据”作为输入,但这不是 }); 我试图通过使用jQuery的卸载方法来解决这个问题 如下 //在客户端 $(窗口).unload(函数(){ 发出('defect','I'ming'); }); 但是,卸载时它似乎根本不会发出任何信号。(卸载
//在服务器端
socket.on('disconnect',function(){
//在其他绑定中,它将“数据”作为输入,但这不是
});
我试图通过使用jQuery的卸载方法来解决这个问题
如下
//在客户端
$(窗口).unload(函数(){
发出('defect','I'ming');
});
但是,卸载时它似乎根本不会发出任何信号。(卸载时可能socket
超出范围?)
当客户端断开连接时,是否有办法通过websocket将数据发送到服务器
第二,有没有办法在套接字中存储字符串数据?例如,
socket.userName=userNameVar代码>
--更新--
下面是我如何在服务器端设置环境
io.sockets.on('connection',函数(socket){
socket.on('defect',函数(数据){
控制台日志(数据);
console.log(“用户左”);
});
socket.on('disconnect',function()){
console.log(“用户断开连接”);
});
});
下面的代码在客户端
var socket=io.connect(hostVar);
$(窗口).unload(函数(){
发出('defect','I'ming');
});
您无法在断开连接时发送数据的原因是您已断开连接。你所问的有点类似于说“在对方挂断我的电话后,我还能和对方通话吗?”
如果要发出“depart”事件,则仍必须在服务器端的“connect”处理程序中捕获它:
例如:
io.socket.on('connection', function(socket) {
socket.on('depart', function(msg) {
// you should get depart message here
});
})
您的离开事件将在连接终止之前发生。断开连接仅在成功断开连接时由服务器引发,因此它无法接收任何消息
试试看,告诉我这是否有效:)您无法在断开连接时发送数据的原因是您已断开连接。你所问的有点类似于说“在对方挂断我的电话后,我还能和对方通话吗?”
如果要发出“depart”事件,则仍必须在服务器端的“connect”处理程序中捕获它:
例如:
io.socket.on('connection', function(socket) {
socket.on('depart', function(msg) {
// you should get depart message here
});
})
您的离开事件将在连接终止之前发生。断开连接仅在成功断开连接时由服务器引发,因此它无法接收任何消息
试试看,告诉我这是否有效:)用这个代替
$(window).on('beforeunload',()=>{
socket.emit('page_unload');
});
在服务器端
io.socket.on('connection', function(socket) {
socket.on('page_unload', function(msg) {
// client has reloaded page or closed page
});
})
用这个代替
$(window).on('beforeunload',()=>{
socket.emit('page_unload');
});
在服务器端
io.socket.on('connection', function(socket) {
socket.on('page_unload', function(msg) {
// client has reloaded page or closed page
});
})
是的,我这样做了,但是jQuery.unload事件不会发送该数据。。。我将提供更多关于updatehmmm的代码。您的socket对象在那个阶段仍然有效吗?执行警报(socket.toString())以查看对象是否仍然存在。显然,警报不会显示…我猜我的代码中某处有问题。。我会寻找它好的,当我在Chrome plus中测试它时,它不会显示警报
消息,但Firefox似乎执行得很好。但是,即使使用Firefox,套接字似乎也不会向服务器发出deep
msg。尝试查看是否可以在其他事件的jQuery中的其他位置发出套接字。是的,我这样做了,但jQuery.unload事件不会发送该数据。。。我将提供更多关于updatehmmm的代码。您的socket对象在那个阶段仍然有效吗?执行警报(socket.toString())以查看对象是否仍然存在。显然,警报不会显示…我猜我的代码中某处有问题。。我会寻找它好的,当我在Chrome plus中测试它时,它不会显示警报
消息,但Firefox似乎执行得很好。但是,即使使用Firefox,套接字似乎也不会向服务器发出deep
msg。尝试查看是否可以在其他事件的jQuery中的其他位置发出套接字。请添加更多详细信息。请添加更多详细信息。