我在node.js中收到一条消息,对象套接字未定义
I am receiving a message in node.js and the object socket is undefined
我有以下代码:
function Socket(io, playGame, mapper) {
io.on('connection', function (socket) {
// message handler for the chat message
socket.on('sendChat', function (data) {
console.log(socket);
console.log(data);
console.log('recieved chat');
var connectedPlayer = playGame.findConnectedPlayer(socket);
if (!connectedPlayer)
return;
var connectedGame = playGame.findConnectedGame(socket, connectedPlayer.gameId);
if (!connectedGame)
return;
// send update game with players properly ordered
for (socketIndex in this.sockets) {
var socket = this.sockets[socketIndex];
// send the new data to each player
socket.socket.emit('chatUpdate', { chatText: data.chat });
}
});
// message handler for join game message
socket.on('joinGame', function (data) {
console.log('recieved join:', JSON.stringify(data));
if (!playGame.newConnectedPlayer(socket, data))
return;
在sendChat的方法中,套接字是未定义的。在joinGame的方法中,定义了套接字。我尝试了几种想法,但问题依然存在。如有任何帮助,我们将不胜感激。
您必须重命名两个socket
变量中的一个——循环中'connection'
或var
的参数:
io.on('connection', function (socket) {
for (socketIndex in this.sockets) {
var socket = this.sockets[socketIndex];
var
正在对参数进行阴影处理,使参数无法访问。
这在一定程度上是因为var socket
不仅仅存在于for
循环中。JavaScript var
的作用域是function
,它们的声明被提升到function
的顶部,如:
socket.on('sendChat', function (data) {
var connectedPlayer, connectedGame, socket; // each initially `undefined`
console.log(socket);
// ...
for (socketIndex in this.sockets) {
socket = this.sockets[socketIndex];
// ...
});
而且,具有相同的确切名称,从特定的function
最多只能访问其中一个。
还要注意,for
循环和var socket
并不是真正必要的。
可以使用Socket.IO Server
自己的.emit()
方法向所有客户端发送消息。
io.emit('chatUpdate', { chatText: data.chat });
相关文章:
- 递归对象消息
- 尝试从对象打印出响应消息
- 我的代码给了我一条错误消息:GetElementById()为null或不是对象
- 基于当前悬停对象更改引导弹出消息
- Plupload无法访问JSON对象的错误消息
- 变量错误消息=“ ”;中应包含的对象
- 如何避免收到一条消息,指出对象未定义
- Javascript错误消息,自定义对象表示
- 对象 #<传入消息> 没有方法“post”
- 在 AngularJS 中,如何使指令成为对象,以便可以向它“传递消息”(在其上调用方法)
- 这个对象在 Chrome 中的错误“消息”获取器
- Docusign / Salesforce:从 Salesforce 自定义对象发送信封会给出错误消息“记录中没有联系人
- 如何使用TinyMCE和Internet Explorer 8解决“需要对象”错误消息
- 无法访问 vline.带有 postMessage() 的消息对象
- Jquery / Handlebars错误消息 - 未捕获的类型错误:对象[对象对象]没有方法“匹配”
- 尝试使用 quatitize.js但收到错误消息“未捕获的类型错误:对象 #<错误>没有方法'调色板'”
- 即使在将操作处理程序放在“actions”对象中后,我仍然在 Emberjs 中不断收到弃用消息
- 我在node.js中收到一条消息,对象套接字未定义
- 从父对象内部的相邻对象打印对象会导致'未定义'消息
- 消息:对象没有'不支持此属性或方法