套接字 IO - Socket.emit 发送给所有客户端
Socket IO - Socket.emit is sent to all clients
我正在使用 socket io 创建游戏。玩家这样连接:
var playerName = document.getElementById("name").value;
socket.emit('setup player', {
name : playerName
});
然后在服务器上设置播放器并将其信息发送回客户端:
function onSetupPlayer(data) {
...
var newPlayer = new Player(x, y, color, data.name,
this.id, scale);
socket.emit('setup game', {
localPlayer : newPlayer
});
...
sockets[this.id] = socket;
}
以下调用:
socket.emit('setup game', {
localPlayer : newPlayer
});
应该只将设置数据发送回最初请求完成设置的客户端。但是,设置呼叫会发送给大厅中的每个人。
这与我使用 localhost 测试它有什么关系吗?我还在同一台机器上使用不同的选项卡对其进行测试。如果这是导致问题的原因,有没有办法解决它?因为这在测试我的游戏时非常烦人。
编辑:
初始化:
var express = require('express');
var app = express();
var http = require('http').Server(app);
var socket = require('socket.io')(http);
var path = require('path');
var io = require('socket.io')(80);
...
var setEventHandlers = function() {
socket.sockets.on("connection", onSocketConnection);
};
正在侦听连接:
function onSocketConnection(client) {
...
client.on("setup player", onSetupPlayer);
...
};
在客户端我有这个:
var setEventHandlers = function() {
socket.on("setup game", onSetupGame);
...
}
socket.emit
向除此之外的所有人发送事件。要将数据发送回该用户,请尝试
io.to(socket).emit()
我正在使用 socket io 创建游戏。玩家这样连接:
var playerName = document.getElementById("name").value;
socket.emit('setup player', {
name : playerName
});
然后在服务器上设置播放器并将其信息发送回客户端:
function onSetupPlayer(data) {
...
var newPlayer = new Player(x, y, color, data.name,
this.id, scale);
socket.emit('setup game', {
localPlayer : newPlayer
});
...
sockets[this.id] = socket;
}
以下调用:
socket.emit('setup game', {
localPlayer : newPlayer
});
应该只将设置数据发送回最初请求完成设置的客户端。但是,设置呼叫会发送给大厅中的每个人。
这与我使用 localhost 测试它有什么关系吗?我还在同一台机器上使用不同的选项卡对其进行测试。如果这是导致问题的原因,有没有办法解决它?因为这在测试我的游戏时非常烦人。
编辑: 初始化:
var express = require('express');
var app = express();
var http = require('http').Server(app);
var socket = require('socket.io')(http);
var path = require('path');
var io = require('socket.io')(80);
...
var setEventHandlers = function() {
socket.sockets.on("connection", onSocketConnection);
};
正在侦听连接:
function onSocketConnection(client) {
...
client.on("setup player", onSetupPlayer);
...
};
在客户端我有这个:
var setEventHandlers = function() {
socket.on("setup game", onSetupGame);
...
}
socket.emit
向除此之外的所有人发送事件。要将数据发送回该用户,请尝试
io.to(socket).emit()