Socket 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将命令从客户端发送到服务器
- Socket.io客户端在使用名称空间时忽略端口[Bug?]
- nodejs中的socket.io客户端
- socket.io:断开连接事件 - “传输关闭”、“客户端命名空间断开连接”、“传输错误”和“强制关闭”
- 多个 socket.io 客户端连接不起作用(谷歌浏览器,火狐浏览器)
- Socket.IO socket.id 更改同一客户端而不重新连接
- Socket.IO 客户端库提供“欢迎来到 socket.io”消息
- Ember-cli-Mirage 重定向 socket.io 客户端,该客户端注入 Mirage 中
- socket.io 客户端是否必须存在于全局范围内
- Node和Socket.io…阻止外部客户端连接
- 每个客户端保存socket.io数据
- 在客户端断开连接时释放事件处理程序 Socket.IO
- 在不同子域上使用Socket.IO服务器和客户端
- 客户端如何知道发射是否失败?socket.emit()有回调吗
- 带有本地客户端的Socket.io.原点为null且访问控制允许原点
- 如何在自动重新连接超时后重新连接socket.io客户端
- socket.io-发送到socketid(单个客户端)不工作
- 断开客户端与socket.io的连接
- 在socket.io中从客户端发送广播消息
- 'io未定义'在客户端上.在HTML中包含socket.io脚本标记