【问题标题】:socket.io setinterval waysocket.io 设置间隔方式
【发布时间】:2012-02-10 15:56:44
【问题描述】:

我想用socket.io + node.js制作一个网页,每1秒给客户他朋友的消息。

我的代码:

客户:

var socket = io.connect('http://localhost:port');
socket.on('connect', function(){
    socket.emit('hello', 'Hello guest');
});
socket.on('news_by_server', function(data){
    alert(data);
});
setInterval(function(){
    socket.emit('news', 'I want news :D ');
}, 1000);

服务器:

    var io = require('socket.io').listen(port);
    io.sockets.on('connection', function (socket) {
        socket.on('hello', function(data){
            console.log('new client connected');
        });
        socket.on('news', function(data){
            socket.emit('news_by_server', 1);
        });
    });

这是电源代码,但我的问题是关于 INTERVAL,制作实时新闻是好还是有更好的方法。

【问题讨论】:

    标签: socket.io


    【解决方案1】:

    客户无需询问新闻。如果您想每 1 秒发出一次,您可以强制服务器 - 只要有客户端连接,他们就会收到更新。如果没有连接客户端,您将在日志中看到没有任何反应。

    在服务器上

    setInterval(function(){
        socket.emit('news_by_server', 'Cow goes moo'); 
    }, 1000);
    

    在客户端

    socket.on('news_by_server', function(data){
      alert(data);
    });
    

    【讨论】:

    • 谢谢,我要找的东西
    • 在服务器上写socket.emit( ... 时,socket是什么?我收到一条错误消息,提示 socket 未定义。谢谢
    • io.sockets.on('connection', function (socket) {
    • 当客户端使用特定页面的事件请求此类数据时,仅在时间间隔内发出不会节省资金。你能不能在页面更改时清除这些间隔?
    【解决方案2】:

    这几乎是执行此操作的标准方法。如果你还没有看过 socket.io 上的example apps 页面,这里有一个 beibertweet 示例,它使用 setInterval 来执行此操作。

    这个博客上还有一个slightly more advanced example

    另外 .. 我发现 YouTube 上的 Ryan Dahls's intro 对于了解节点操作的基础知识非常有用。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      相关资源
      最近更新 更多