【发布时间】:2017-12-08 14:46:08
【问题描述】:
我或多或少地遵循 socket.io 文档并尝试将其应用于我略有不同的项目,但我相信我犯了一些错误。我使用 express-generator 来创建我的项目的骨架,因此我得到了 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();
});
现在我明白了,当发出请求时,控制台应该记录“用户已连接:”+套接字的 id,但除了“套接字正在运行!”之外,我没有得到任何东西。我假设我遗漏了一些东西,但无法弄清楚并且文档使用的是相同的代码。
var port = normalizePort(process.env.PORT || '8087');
app.set('port', port);
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
【问题讨论】:
-
您的 http 服务器是否正在监听任何端口?
-
为什么将 io 作为函数调用?试着写 var socket = io;
-
是的,在 8087 端口上。我为此添加了代码。
-
var socket = io();直接取自 socket.io 的文档。我试过 var socket = io;但没有任何改变。
-
您似乎正在关注为简单的 nodeJs 应用程序编写的基本文档,但看起来您正在使用 express,因此您应该遵循以下内容:socket.io/docs/#using-with-express-3/4
标签: javascript node.js sockets express