【问题标题】:How to socket.io emitting and receiving simple data?socket.io 如何发送和接收简单数据?
【发布时间】:2013-12-16 23:01:06
【问题描述】:

我一直在玩socket.io(非常新手),我的目标是将数据发布到服务器,做一个小的数据库条目并将数据实时返回给用户。

我的默认服务器目前是 nginx。

我一直在查看 socket.io 上的示例,但这只是在想要使用 node.js 来处理所有事情时。

在尝试监听 3000 端口时,我收到以下警告:

服务器:

  var io = require('socket.io').listen(3000);

  io.sockets.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
  console.log(data);
  });
});

客户:

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

我只是想将数据从我的网页推送到节点服务器,但现在每当我这样做时,我都会得到 socket.io/socket.io.js 文件的 404。我已经对此进行了研究,其他答案建议更新节点模块 express 的最新版本?我已确保在我的服务器上安装了最新版本的 node.js、socket.io 和 express。

这里是否有明显的问题,如果这是一个明显的问题,对不起。

【问题讨论】:

    标签: node.js socket.io


    【解决方案1】:

    假设您运行的是 Linux 机器,有两个问题。一方面,Nginx 已经在端口 80 上运行。因此,您不能在该端口上运行另一个进程,并且应该在另一个端口上运行 Node.js,或者按照this 之类的设置。

    另一个问题是您需要 root 访问权限才能在 Linux 机器上使用 EACCES 错误。

    一旦服务器正确绑定,socket.io.js 文件将不再返回未找到错误。

    【讨论】:

    • 嗨@hexacynide,我在帖子中将上面的代码更新为我的更改。现在节点在端口 3000 上运行,客户端也在 3000 上连接。但是我仍然在 .js 文件上收到 404,查看我的实际文件夹,在我安装 socket.io 的公共文件夹中没有文件是 socket.io.js 文件,这是预期的吗?感谢您的快速回复。
    • 另外值得注意的是,警告已经消失了,也谢谢你,进步很大。
    • 您必须更改 HTML 中的脚本源以适应端口。
    猜你喜欢
    • 2018-12-13
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多