socket.io:如何从其他套接字获取套接字变量



一个房间里有两个玩家。

每个播放器都将颜色保存为插座变量:

socket.on('join', function(color){socket.color = color});

当使用此颜色的客户端触发请求时,很容易获得此颜色变量:

socket.on('own_color', function(){
    console.log('own color:     ' + socket.color);
});

,但是现在我们需要其他玩家的颜色。也许我们可以使用其他播放器的套接字ID来以某种方式获得它:

socket.on('partner color', function(){
    var partnerid = io.sockets.clients('room1')[0].id;
    var partnercolor = '????????'
    console.log('partner color     ' + partnercolor);
});

您知道如何获得另一个玩家的颜色吗?

在某处,您正在调用io.listen-确保存储结果:

socketio = io.listen(...)

然后,您可以根据套接字ID获取套接字对象:

socketio.sockets.sockets[idSocket]

您必须通过套接字进行通信,要求您需要的数据。插座连接本身只是运输。如果您需要知道一些"发出"问题另一方面,请听(" on")来解决这个问题并相应地回答

猜测io.sockets.clients('room1')是该房间中所有客户端的列表然后:

io.sockets.clients('room1')[0].emit('request color');
io.sockets.clients('room1')[0].on('respond color', function (color) {
  console.log('color received', color);
});

另一侧

socket.on('request color', function () {
  socket.emit(color);
});

多亏了亚伦·杜福(Aaron Dufour),我们现在可以发布丢失的摘要:

socket.on('partner color', function(){
    var partnerid = io.sockets.clients('room1')[0].id;
    var partnercolor = io.sockets.sockets[partnerid].color;
    console.log('partner color:  '+ partnercolor);
});

我们的服务器结合了express和socket.io,所以也许有人感兴趣,在这种情况下如何调用io.listen:

var express = require('express')
    , http = require('http');
var app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server);
server.listen(8080);

相关内容

最新更新