Node.js + ExpressJS + Socket.IO TypeError: obj.on is not a function

Node.js + ExpressJS + Socket.IO TypeError: obj.on is not a function

不幸的是,我在工作中遇到了障碍。我有一个 node.js+ExpressJS 后端通过 Socket.io 连接到前端,并按如下方式创建了服务器和客户端:

app.js:

var express = require('express');
var app = express();
var server = require('http').Server(app);
var io = require('socket.io')(server);
// Routes and io.on statement with listeners on 'connection'
server.listen(2000);
io.listen(2000);

Index.html:

<!doctype html>
<!--- html stuff --->
<script src='/socket.io/socket.io.js'></script>
<script src='/js/jquery.min.js></script>
<script>
    $(document).ready(function() {
        var socket = new io.Socket('localhost', {port: 2000});
        socket.connect();
        // other js that doesn't get picked up
    });
    </script>

当我在浏览器中打开我的控制台时会发生什么:

io.connect();
TypeError: obj.on is not a function

我是不是漏掉了什么,或者我的代码中有什么不幸?

请尝试更改您的 index.html:

var socket = new io.Socket('localhost', {port: 2000});
socket.connect();

至:

var socket = io.connect();