2014-11-20 2 views
0

У меня есть приложение nodejs, в котором я хочу отслеживать каждый входящий запрос в прямом эфире на веб-странице. Я пытаюсь сделать это с помощью socket.io. У меня есть следующий в моем app.js файлExpressJS/Node/Socket.io Broadcast Message по каждому запросу

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 

Когда доступ к любой странице, я только получаю сообщение вещания, когда Я обновляю индексную страницу сайта. Так, например, когда я первый локальный доступ: 300, я могу увидеть следующее:

URL:/ Время: 0909234234

Однако, если я открываю новую вкладку и доступ к Localhost: 3000/пример, я должны обновить первую страницу, чтобы получить следующий вид

URL:/ время: 0909234234

URL:/пример время: 0909234239

Я борюсь чтобы понять, почему это не обновляется автоматически, не обновляя страницу. Любая помощь мне очень ценится.

+1

вы излучающие новости, когда приходит запрос попытаться вещания для всех сокетов.. –

+0

@MohammadRahchamani Спасибо, что вернулись ко мне, я довольно новичок в node и socket.io. Не могли бы вы привести пример того, что вы имеете в виду. – kushaldsouza

+0

@MohammadRahchamani Спасибо за помощь. Я понял. Если вы можете опубликовать свой ответ ниже, я соглашусь с ним. Еще раз спасибо. – kushaldsouza

ответ

1

в вашем коде для каждого входящего запроса, когда сокет подключается, вы испускаете news в этот разъем. то, что вы хотите, когда приходит запрос, введите news во все подключенные сокеты. вы можете сделать это следующим образом:

var usageLogger = function(req, res, next) { 
    //do what you want 
    ... 
    io.sockets.emit('news', liveMessage); 
} 
Смежные вопросы