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

时间:2017-12-08 14:46:09

标签: javascript node.js sockets express

我或多或少地遵循socket.io文档,并尝试将其应用于我稍微不同的项目,但我相信我犯了一些错误。我使用快速生成器来创建项目的骨架,因此我获得了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();

});

现在我了解到,当发出请求时,控制台应该记录“用户已连接:&#34; +套接字的ID,但除了&#34; Socket正在运行之外,我没有得到任何东西!&#34;。我假设我遗漏了一些东西,但无法解决问题并且文档使用相同的代码。

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

1 个答案:

答案 0 :(得分:2)

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

var server = http.createServer(app);

要使用它,请更改

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

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