Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js socket.io出现问题:未定义套接字错误_Node.js_Sockets_Socket.io - Fatal编程技术网

Node.js socket.io出现问题:未定义套接字错误

Node.js socket.io出现问题:未定义套接字错误,node.js,sockets,socket.io,Node.js,Sockets,Socket.io,所以,我查看了之前对这个问题的回答,没有一个回答与我的代码一致 现在我正试图部署一个数据库来保存我的聊天历史记录,但套接字未定义错误不断出现 下面是有问题的代码: socket.on('person', function(msg){ console.log('person: ' + msg); socket.broadcast.emit('person', msg); client.incr('msg_id', function(err, msg_id) {

所以,我查看了之前对这个问题的回答,没有一个回答与我的代码一致

现在我正试图部署一个数据库来保存我的聊天历史记录,但套接字未定义错误不断出现

下面是有问题的代码:

socket.on('person', function(msg){
    console.log('person: ' + msg);
    socket.broadcast.emit('person', msg);
    client.incr('msg_id', function(err, msg_id) {
      console.log('msg_id', msg_id);
      client.hset('history', msg_id, msg);
    });
  });
socket.on'person',functionmsg{ ^ ReferenceError:未定义套接字


是因为我在其他代码中没有正确定义“person”吗?

错误是没有定义socket变量

您的代码应该放在socket.io连接回调中

使用socket.io+express的完整示例:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

io.on('connection', function(socket){
    socket.on('person', function(msg){
    console.log('person: ' + msg);
    socket.broadcast.emit('person', msg);
    client.incr('msg_id', function(err, msg_id) {
        console.log('msg_id', msg_id);
        client.hset('history', msg_id, msg);
    });
});

问题出在代码的其他地方。套接字来自哪里?是否在任何地方取消设置它?