为什么我没有收到一个新的套接字用户连接的console.log?

我或多或less地遵循socket.io文档,并试图将其应用于我稍微不同的项目,但我相信我犯了一些错误。 我使用了快速生成器来创build我的项目的骨架,因此我得到了app.js文件,www文件和路由文件。

我把这个代码放在www文件中:

var io = require('socket.io')(http); console.log('Socket is running!'); io.on('connection', function(socket){ console.log('A User Has Connected: ' + socket.id); }); 

这个代码在我的页脚文件中:

 <script src="/socket.io/socket.io.js"></script> <script src="/javascripts/jquery-3.2.1.min.js"></script> <script src="/javascripts/javascript.js"></script> </body> </html> 

这在我的JavaScript文件中:

 $(document).ready(function(){ var socket = io(); }); 

现在我明白,当一个请求发出时,控制台应该logging“一个用户已连接:”+套接字的ID,但我没有得到任何比“套接字正在运行!”以外的任何东西。 我假设我失去了一些东西,但无法弄清楚,文档使用相同的代码。

 var port = normalizePort(process.env.PORT || '8087'); app.set('port', port); server.listen(port); server.on('error', onError); server.on('listening', onListening); 

你必须使用相同的服务器实例express-generator create,这是www文件中的以下行

 var server = http.createServer(app); 

要使用它,请更改

 var io = require('socket.io')(http); 

 var io = require('socket.io')(server);