【问题标题】:ExpressJS/Node/Socket.io Broadcast Message on every requestExpressJS/Node/Socket.io 在每个请求上广播消息
【发布时间】:2014-11-21 02:56:52
【问题描述】:

我有一个 nodejs 应用程序,我想在其中监控网页上的每个传入请求。我正在尝试使用 socket.io 来做到这一点。我的 app.js 文件中有以下内容

var express = require('express');
var http = require('http');
var app = express();
var server = require('http').Server(app);
var io = require('socket.io')(server);
server.listen(3000);

var usageLogger = function(req, res, next) {
    console.log("GOT REQUEST !");
    var os = require("os"),
    cpus = os.cpus();

    var url = "URL: " + req.url + "\n" ;
    var urlTime = "Time: " + new Date().getTime() + "\n" ;

    var liveMessage = "<div><p><b>URL:</b> "+ req.url + "</p><p><b>Time: </b> " + new Date().getTime() + "</p></div>"

    io.on('connection', function(socket){
      socket.emit('news', liveMessage);
    });
}

app.use(usageLogger);

在我的 footer.jade 文件中,我有以下内容:

.container
    .footer
        hr(style='margin: 30px 0 10px 0;')
        p &copy;&nbsp;
            a(href='#') Author
            |  2014

script(src='/javascripts/bootstrap.min.js')
script(src="/socket.io/socket.io.js")
script(type='text/javascript')
  |var socket = io();
  |socket.on('news', function(msg){
  |$('#messages').append(msg);
  |});


block footer

当我访问任何页面时,我只会在刷新站点的索引页面时收到广播消息。例如,当我第一次访问 localhost:300 时,我可以看到以下内容:

网址:/ 时间:0909234234

但是,如果我打开一个新选项卡并访问 localhost:3000/example,我必须刷新第一页才能获得以下视图

网址:/ 时间:0909234234

网址:/示例 时间:0909234239

我很难理解为什么不刷新页面就不会自动更新。任何帮助我都非常感谢。

【问题讨论】:

  • 当一个请求进来时你正在发送消息。尝试广播到所有套接字。
  • @MohammadRahchamani 感谢您回复我,我对 node 和 socket.io 还很陌生。您能否举例说明您的意思。
  • @MohammadRahchamani 感谢您的帮助。我想到了。如果您可以在下面发布您的答案,我将接受它。再次非常感谢。

标签: node.js express socket.io


【解决方案1】:

在您的代码中,对于每个即将到来的请求,当一个套接字连接时,您会向该套接字发出news。你想要的是,当一个请求进来时,向所有连接的套接字发出news。 你可以这样做:

var usageLogger = function(req, res, next) {
   //do what you want
   ...
   io.sockets.emit('news', liveMessage);
}

【讨论】:

    猜你喜欢
    • 2011-09-22
    • 2019-05-04
    • 2018-12-23
    • 1970-01-01
    • 2020-11-18
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多