【问题标题】:socket.io TypeError: socket.on is not a functionsocket.io 类型错误:socket.on 不是函数
【发布时间】:2018-08-27 12:10:53
【问题描述】:

我正在使用 express 开发一个节点应用程序,它有一个聊天系统,我正在使用 socket.io,但我收到了这个错误

Server is listening on 3000
made socket connection
C:\Users\User\MyFolder\Projects\FMIS\app\app.js:139
socket.on('chat', function(data){
       ^

TypeError: socket.on is not a function
at Namespace.<anonymous> 
(C:\Users\User\MyFolder\Projects\FMIS\app\app.js:139:12)
at emitOne (events.js:116:13)
at Namespace.emit (events.js:211:7)
at Namespace.emit 
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)

这是我在 `app.js 中尝试做的事情

var reload = require('reload');
var bodyParser =  require('body-parser');
var app = express();
var  socket = require('socket.io');
app.set('port', process.env.PORT || 3000);
app.set('view engine', 'ejs');
app.set('views','app/views');
app.locals.siteTitle = "FMIS";
app.use(express.static('app/public'));

app.use(require('./routes/Chat_api'));
app.use(require('./routes/Chat'));

var server = app.listen(app.get('port'),()=>{
console.log('Server is listening on '+ app.get('port'));
});

var io = socket(server);

io.on('connection',function(){
    console.log('made socket connection');
    socket.on('chat', function(data){
        // io.sockets.emit('chat',data);
        console.log(data);
    });
});
reload(server, app);

我像这样从客户端发送和接收数据

 socket.emit('chat',{
          user: chatUsername.value,
          Message: chatMessage.value
        });

socket.on('chat',function(data){
        // showMessage(data);
        console.log(data);
    });        

【问题讨论】:

标签: javascript node.js express socket.io


【解决方案1】:

您正在使用 socket.io 的库引用,它不包含函数属性 on。您想要做的是使用提供给您的套接字作为io.on 连接事件的回调参数。要解决此问题,您只需将 socket 添加到回调函数的参数中即可。像这样:

io.on('connection',function(socket) {
  console.log('made socket connection');
  socket.on('chat', function(data){
    // io.sockets.emit('chat',data);
    console.log(data);
  });
});

现在socket 指的是连接提供给您的套接字。请参阅this example 了解更多信息。

【讨论】:

    猜你喜欢
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 2012-01-26
    • 2016-02-26
    • 2013-04-01
    • 2016-03-06
    相关资源
    最近更新 更多