2016-05-10 47 views
0

我有以下app.js發射的值不能被添加到DIV express.js socket.io

var express = require('express'); 
var app = express(); 
// var responseHandlerRouter = require('./routes/responseHandlerRouter.js'); 

routes = require('./routes'); 

var server = app.listen(3000, function() { 
    console.log('Example app listening on port 3000!'); 
}); 

io = require('/usr/local/lib/node_modules/socket.io').listen(server); 

app.use('/', routes(io)); 

routes.js

var express = require('express'); 
var router = express.Router(); 

module.exports = function (io) { 

    // all of this router's configurations 

    router.get('/login', function (req, res, next) { 
     io.emit('notification', 'news'); 
     res.end('well finally I am here'); 
    }); 

    return router; 

} 

的index.html

<!doctype html> 
<html> 
    <head> 
     <script src="http://127.0.0.1:3000/socket.io/socket.io.js"></script> 
     <script> 

     var socket = io.connect('http://localhost:3000/login'); 

     socket.on('notification', function (data) { 
      console.log(data); 
     }); 
     </script> 
    </head> 
    <body> 
     <ul id='messages'></ul> 
    </body> 
</html> 

當我做了一個URL的時候,它應該發出,但它不會發生。它沒有顯示任何錯誤,但失敗了。

有什麼不對嗎?

更新

"news" was being sent from the router successfully.

我要顯示在div的 「新聞」。 但我不能把這段如下

.... socket.on('notification', function (data) { 
       $('#messages').html(data); 
      }); 
      </script> 
     </head> 
     <body> 
      <ul id='messages'></ul> 
     </body>.... 

將使這個資格賞金

+0

你確實要求'/login與ajax? –

+0

不,我剛剛做了一個使用郵遞員或通過訪問本地主機:3000 /通過瀏覽器登錄。 – Ajeesh

+0

你的html頁面實際上是一個登錄頁面嗎?所以你要求'/ login'和login.html呈現,如果是的話,socket需要時間來連接 –

回答

0

看起來你是在一個錯誤的方式使用路由器。

不確定,但我認爲app.use('/login', routes(io))而不是你應該做的伎倆。

在你實現你的路由器接收只到達'/'

編輯:雖然答案已被接受,真正的解決辦法是在下面的意見(指定的錯誤連接的URL)

+0

我可以解決這個問題。我正在網絡選項卡中獲取值。但我不能夠提醒或附加價值div – Ajeesh

+0

@Ajeesh然後更新問題 –

+0

@MedetTleukabiluly完成!請檢查 – Ajeesh