【问题标题】:Client not updating realtime with Socket.io and Node.js客户端不使用 Socket.io 和 Node.js 实时更新
【发布时间】:2015-01-04 14:13:26
【问题描述】:

为什么我的客户端没有使用 socket.io 和 node.js 自动更新?

我的后端接受来自 PHP 的 JSON POST 请求,然后将数据发送到所有连接的设备。

我的后端代码

app.post('/', function (req, res) {
    console.log(req.body);
    subdata = req.body;
    res.send('ok');
});

io.sockets.on('connection', function (socket) {
    socket.broadcast.emit('info', subdata);
});

客户端

<script>
    var socket = io.connect('http://127.0.0.1:3000/');
    socket.on('info', function (data) {
      console.log(data);
    });
</script>

【问题讨论】:

  • subdata 是什么?不要使用全局变量。异步 JavaScript 代码中的全局变量几乎在所有情况下都是一个错误。
  • subdata 保存着req.body中PHP发送的json
  • 我不是这个意思。 io.sockets.on('connection') 回调中的subdata 不存在。就你使用它的方式而言,它是一个全局变量,你不能在异步代码中使用全局变量
  • 我该如何解决这个问题?我是 nodejs 的新手
  • 不了解基本情况做事是没有意义的

标签: javascript node.js sockets


【解决方案1】:

那是因为你只在建立新的 socket.io 连接时发出一次。如果再次调用 app.post 回调,则不会从 socket.io 发出另一条消息。

您希望从您的 app.post 回调中发出,并停止使用全局变量。

【讨论】:

  • 你能找到sn-ps吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-13
  • 1970-01-01
  • 2016-10-11
  • 2013-11-17
  • 2016-05-31
相关资源
最近更新 更多