一个房间里有两个玩家。
每个玩家都有一个颜色保存为套接字变量:
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);
});
你知道如何获得其他玩家的颜色吗?
答案 0 :(得分:1)
某处,您正在呼叫io.listen
- 请确保存储该结果:
socketio = io.listen(...)
然后,您可以根据套接字ID获取套接字对象:
socketio.sockets.sockets[idSocket]
答案 1 :(得分:0)
您必须通过套接字进行通信,请求您需要的数据。套接字连接本身只是一种传输方式。如果你需要知道一些“发出”问题 并在另一边听取(“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);
});
答案 2 :(得分:0)
感谢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);