【问题标题】:Node + Socket.io Connection issueNode + Socket.io 连接问题
【发布时间】:2014-10-12 01:18:33
【问题描述】:

我无法连接到 socket.io。使用下面的代码,我的浏览器控制台上不断出现“io is not defined”错误。有人知道我在这里做错了什么吗?我已经在 stackoverflow 上闲逛了好几个小时,但似乎没有任何解决方案有效......

服务器端:

,db = require("../../lib/db")
,config = require("../../config")
,app = require("../index")
,io = require('socket.io')(app);
;
io.on('connection', function (socket) {
    console.log('connected')
});

exports.render = function(req, res){
    console.log(io)
    res.render("vitron", {});
}

客户端:

<!doctype html>
<html>
<head>
 <title>Sockets</title>
 <script src="/socket.io/socket.io.js"></script>
 <script>
 var socket = io.connect('http://localhost');
socket.on('news', function (data) {
 console.log(data);
 socket.emit('my other event', { my: 'data' });
});
 </script>
</head>
<body>
</body>
</html>

【问题讨论】:

  • 检查浏览器错误日志,看看是否有错误加载/socket.io/socket.io.js。如果有,那么问题是您的 socket.io 初始化服务器端缺少一个中间件调用,该调用将在请求时将 socket.io.js 文件提供给客户端。除非您进行正确的中间件初始化,否则它不会自动提供。 socket.io 文档中有很多关于如何初始化事物的示例。
  • 感谢您的帮助!我确实有以下错误: GET localhost:4602/socket.io/socket.io.js 对不起我的无知,但你指的是哪种中间件调用?
  • 这表明您没有正确的服务器端初始化,因此您的应用服务器会自动提供 /socket.io/socket.io.js 文件。
  • 你是说 io = require('socket.io')(app) 中的 'app' 可能不是它应该的样子?

标签: node.js sockets socket.io


【解决方案1】:

您显然没有正确的服务器端初始化,因此您的服务器将自动提供/socket.io/socket.io.js 文件。

有很多方法可以做到这一点,但 socket.io 文档中记录的最简单方法是使用一些内置中间件,该中间件将使 socket.io 服务器端库自动拦截对 @ 的请求987654322@ 文件并提供脚本文件。

socket.io 文档准确地展示了在使用 express 和 node 时如何做到这一点。如果您不使用 express,那么您可以使用自己的中间件来完成。或者,如果您只是使用普通节点,则必须自己处理该路由,或者只需将 /socket.io/socket.io.js 文件放在可以直接从中请求的已知位置。如果需要,您甚至可以在 CDN 上链接到它,但使用内置方案有一个优势,因为当/如果您升级服务器上的 socket.io 库时,它将自动包含匹配的客户端库这有点好。

我不确切知道您的整体设置是什么,但这是我使用 express 4 进行的 socket.io 初始化。

var express = require('express');
var app = express();
var server = app.listen(8081, function() {
    console.log(new Date().toISOString() + ": server started on port 8081");
});
var io = require('socket.io').listen(server);

【讨论】:

    猜你喜欢
    • 2019-09-16
    • 1970-01-01
    • 2018-10-13
    • 2011-10-28
    • 2018-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    相关资源
    最近更新 更多