Ben*_*erg 4 javascript node.js socket.io
我正在前端使用 HTML5 和 Javascript,在后端使用 Node.js 构建简单的 Web 应用程序。我还使用 Socket.IO 在客户端和服务器之间来回传递数据。假设我有一个聊天页面,每个人都可以登录并加入聊天室。我在后端跟踪聊天室中的所有人。我想要做的是,如果一个人退出该房间,则将其从该房间中移出。例如,假设有人关闭了浏览器,他们不应该再显示为活动用户。
Socket.IO 有一个断开连接事件,这似乎是执行此操作的完美工具。例如,当我运行此代码时:
socket.on("disconnect", function (){
console.log("DISCONNECTED");
});
Run Code Online (Sandbox Code Playgroud)
当有人关闭浏览器时,将打印“DISCONNECTED”。现在我的问题是,我如何知道到底是谁关闭了该浏览器?没有数据传递给断开连接事件,因此我不确定应该如何准确检查谁引发了断开连接事件。任何帮助将不胜感激!
基本上,一旦监听“connect”事件,只要客户端连接到服务器,您就会获得一个套接字对象。您可以将客户端信息存储到该套接字对象。您可以参考这篇文章,并注意服务器端代码,其中编码器在服务器端使用 pluarl 形式的“套接字”(因此服务器端将创建许多客户端套接字!)。 http://psismike.com/2011/10/node-js-and-socket-io-multiroom-chat-tutorial/
希望以下示例对您有所帮助。
//server side
var io = require('socket.io').listen(80)
// sockets here, not socket
io.sockets.on('connection', function(socket){
// every connection will create a socket
socket.on('newUser', function(name){
socket.id = name; // socket stores the username
});
socket.on('disconnect', function(){
console.log(socket.id); // retrieve it from socket object
});
// more functionality goes...
});
Run Code Online (Sandbox Code Playgroud)
和客户端
var socket = io.connect('http://localhost:80');
socket.on('connect', function(){
//emit newUser event so that client info is stored
socket.emit('newUser', prompt('Please enter your name!'));
//.... more functionality goes
});
Run Code Online (Sandbox Code Playgroud)
希望这能帮助您理解!
| 归档时间: |
|
| 查看次数: |
2387 次 |
| 最近记录: |