代码之家  ›  专栏  ›  技术社区  ›  Mrugesh

有没有办法只在express服务器上运行socket.io

  •  0
  • Mrugesh  · 技术社区  · 6 年前

    我的代码如下所示:

    const express = require('express');
    
    const app = express();
    
    const io = require('socket.io')(app);
    
    io.on('connection',(socket) =>{
        console.log('a user is connected');
    });
    
    app.listen(port, () => {
        console.log('server started');
    });
    

    当我运行上述代码时,会出现以下错误:

    Error: You are trying to attach socket.io to an express request handler function. Please pass a http.Server instance.

    那么,有什么方法可以让我只使用express模块运行socket.io吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Sookie Singh    6 年前

    不。从3.0开始,express应用程序已成为传递给http或http服务器实例的请求处理程序函数。您需要将服务器传递给socket.io,而不是express应用程序函数。还要确保打电话。在服务器上听,而不是在应用程序上听。

    var app = require('express')();
    var server = require('http').createServer(app);
    var io = require('socket.io')(server);  //listen server not app
    io.on('connection', function(){ /* … */ });
    server.listen(3000);