Node.js Socket.io为每个页面分隔连接事件

时间:2015-06-10 08:51:46

标签: javascript node.js sockets express socket.io

我从Socket.io文档页面中获取了以下代码。

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);

server.listen(80);

app.use(express.static(__dirname + '/public'));

io.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});

我想要一个单独的连接'事件取决于发出请求的页面。例如。

从'指数连接的客户'页面触发此事件。

io.on('connection', function (socket) {
  console.log('connected from the index page');
});

和 从“玩家”得分连接的客户'页面触发此事件

io.on('connection', function (socket) {
  console.log('connected from the index page');
});

我考虑使用命名空间。有没有一种方法可以做到这一点,而无需客户端指定它已从特定页面连接?

此致

1 个答案:

答案 0 :(得分:0)

您可以使用套接字对象中的握手数据来获取URL,然后在if语句中编写不同的逻辑部分。这些方面的东西:

io.on('connection', function (socket) {
  if(socket.handshake.url == "index url you expect"){
    console.log('connected from the index page');
  } else if(socket.handshake.url == "player scores url you expect"){
    console.log('connected from the player scores page');
  }
});