javascript - Socket.io ReferenceError 客户端未定义

标签 javascript node.js socket.io client referenceerror

我正在尝试使用此处最佳答案中描述的方法找到连接到我的 socket.io/node.js 服务器的客户端 ID how to get session id of socket.io client in Client但当我这样做时,我收到错误消息

C:\Games\My games\Newserver\Server\server.js:5
        playerlist[playerlist.length+1] = [client.id,username]
                                           ^
ReferenceError: client is not defined
    at SocketNamespace.<anonymous> (C:\Games\My games\Newserver\Server\server.js
:5:37)
    at SocketNamespace.EventEmitter.emit [as $emit] (events.js:117:20)
    at connect (C:\Games\My games\Newserver\Server\node_modules\socket.io\lib\na
mespace.js:292:10)
    at C:\Games\My games\Newserver\Server\node_modules\socket.io\lib\namespace.j
s:308:13
    at SocketNamespace.authorize (C:\Games\My games\Newserver\Server\node_module
s\socket.io\lib\namespace.js:252:5)
    at SocketNamespace.handlePacket (C:\Games\My games\Newserver\Server\node_mod
ules\socket.io\lib\namespace.js:302:14)
    at Manager.handleClient (C:\Games\My games\Newserver\Server\node_modules\soc
ket.io\lib\manager.js:698:32)
    at Manager.handleUpgrade (C:\Games\My games\Newserver\Server\node_modules\so
cket.io\lib\manager.js:618:8)
    at Server.<anonymous> (C:\Games\My games\Newserver\Server\node_modules\socke
t.io\lib\manager.js:123:10)
    at Server.EventEmitter.emit (events.js:106:17)

我的代码如下

var io = require('socket.io').listen(1337); //Tells server to use socket.io and to listen on port 1337
var playerlist= new Array(); //Array to store player usernames & client ids of these players

io.sockets.on("connection", function(socket) {
    playerlist[playerlist.length+1] = [client.id,username] //Writing to array, crashes here at client.id
    socket.on("username", function(data) {

        var str = "[Server] User "
        var str2 = data
        var str3 = " connected."
        var finalstr = str.concat(str2.concat(str3))
        socket.broadcast.send(finalstr)
        socket.send("[Server] Connected")
    });
});

有人知道如何解决这个问题吗?我只能假设我没有 require()d 一些我应该有的东西,但我不知道是什么。

最佳答案

你没有变量client。请改用socket

换行

playerlist[playerlist.length+1] = [client.id,username]

playerlist[playerlist.length] = [socket.id,username]

顺便说一下,我认为你应该在这里使用playerlist.length

关于javascript - Socket.io ReferenceError 客户端未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22536011/

相关文章:

javascript - 下拉选择表单,转到提交时的 URL

javascript - 如何使用javascript函数在orientdb中取出和输入边缘类记录的值

node.js - 使用 django 和 nodejs 为 websocket 设置 nginx 的配置(wss ://)

javascript - Socket.io TypeError : this. 传输未定义

javascript - 使用 jsPlumb 和 jquery-ui 的行偏移不正确

javascript - Codemirror setGutterMarker 样式

javascript - 如何使用 Node 变换将一个对象转换为另一个对象

javascript - 如何在 jwt-simple 中使 token 过期?

node.js - nodejs 和 socket.io.js 路径解析

iOS:如何在 Swift [NSString] 中显示特殊字符