【问题标题】:ReferenceError: client is not defined Socket.ioReferenceError:客户端未定义 Socket.io
【发布时间】:2021-08-08 06:54:51
【问题描述】:

如何解决这个问题?没看懂,求大神帮忙,谢谢这是我运行 node server.js 时的错误消息:

client.on('getRelay', function (state) { ReferenceError: 客户端未定义

var express = require ('express');
var app = require('express')();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
var port = 3000;

let bodyRelay = {
    relayId: 'RELAY-123',
    state: 1
}

app.use(express.static(__dirname + '/node_modules'));
app.get('/', function(req, res, next) {
    res.sendFile(__dirname + '/index.html');
});

io.on('connection', function(client) {
    console.log('a user has connected');

});

io.sockets.emit('setRelay', bodyRelay);
client.on('getRelay', function (state) {
    bodyRelay = state;
    console.log('id: ' + client.id + 'bodyRelay: ' + JSON.stringify(bodyRelay));
    // io.sockets.emit('setRelay', bodyRelay);
});

client.on('disconnect', function() {
    console.log('a user has disconnected');
});

server.listen(port, () => {
    console.log('Server is running on port: ' + port)
});

【问题讨论】:

  • 表示客户端尚未在任何地方创建。这是该文件的全部代码吗?

标签: javascript html node.js socket.io socket.io-java-client


【解决方案1】:

引用client 的代码块必须在此回调中:

io.on('connection', function(client) {
    console.log('a user has connected');

});

因为这是定义client 的地方。像这样:

io.on('connection', function(client) {
    console.log('a user has connected');

    client.on('getRelay', function (state) {
        bodyRelay = state;
        console.log('id: ' + client.id + 'bodyRelay: ' + JSON.stringify(bodyRelay));
        // io.sockets.emit('setRelay', bodyRelay);
    });

    client.on('disconnect', function() {
        console.log('a user has disconnected');
    });
});

关于您的代码的其他一些注释。

你的位置:

io.sockets.emit('setRelay', bodyRelay);

没有任何意义,因为您在初始化模块时调用它,该模块将永远不会有任何连接的 socket.io 客户端,因此它不会做任何有用的事情。

而且,您使用bodyRelay 变量的方式似乎是一个可能的设计错误。您已将其设置为模块级变量,这意味着它在所有连接的所有请求处理程序之间共享。除非这是为了让所有客户端都可以更改并且所有客户端都访问完全相同的数据集,否则它可能需要不同的设计。我不知道你真的想用它做什么才能知道要建议什么设计。

【讨论】:

    猜你喜欢
    • 2014-04-27
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 2020-10-08
    • 2011-12-03
    相关资源
    最近更新 更多