socket.io-套接字不是仅在客户端上定义

时间:2018-10-17 18:14:45

标签: javascript node.js sockets socket.io

我正在本地计算机(两个名称空间)上运行socket.io的两个实例。当前的问题是,当尝试从客户端(连接到 any 名称空间)连接时,出现以下错误:

Uncaught ReferenceError: socket is not defined

我在没有自定义命名空间的情况下进行了测试,并且出现了相同的问题。服务器端很好,因为我可以发出事件。

客户端代码如下:

客户

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.1.1/socket.io.js"></script>

<script>
var socketOptions           = {};
socketOptions.transports    = ['polling'];
var client                  = new PlayClient();

var playSocket  = io.connect('http://localhost:8044/clients', socketOptions);

playSocket.on('connect', function(socket) {
    console.clear();
    console.info("CLIENT: Connected.");

    socket.on("client:change scene", function(newSceneId) {
        console.log(newSceneId);
        client.changeScene(newSceneId);
    });

});
</script>

看来我只是改写了套接字。因此,基本的故障排除使我进入this answer的行列,以确认这一点。 但是,通过(data)或其他内容传递的socket仍未定义,但控制台声明为TypeError: undefined

如果我将.on('connect')更改为.on('connection'),则由于the socket.io client does not understand the 'connection' event,套接字不再被覆盖,但无法连接或接收任何发出的事件。

对此提供的任何帮助都将不胜感激,因为我似乎陷入了麻烦。

1 个答案:

答案 0 :(得分:0)

您似乎在混淆服务器端和客户端事件;他们是完全不同的。每个客户端对象只能连接到单个服务器,而服务器可以接收许多连接

也许尝试类似的事情:

var playSocket  = io.connect('http://localhost:8044/clients', socketOptions);

playSocket.on('connect', function() {
    console.clear();
    console.info("CLIENT: Connected.");
}

playSocket.on("client:change scene", function(newSceneId) {
    console.log(newSceneId);
    client.changeScene(newSceneId);
});