2016-04-22 69 views
0

我有一個節點應用程序,應該通過HTTP GET請求從另一個應用程序接收請求/api/users?data=68並實時顯示數據。我有處理傳入的api/users路由HTTP請求。首先我有節點的應用程序,與socket.io工作,但現在我想處理HTTP request.Here是我的代碼在Node js應用程序中使用Socket.io處理傳入的HTTP請求

var express = require('express'); 
    var app = express(); 
    var server = require('http').Server(app); 
    var io = require('socket.io')(server); 
    var port = process.env.PORT || 8080 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'jade'); 
    var router = express.Router(); 

    router.get('/api/users', function(req, res) { 
    var query = req.param('data'); 
    io.emit("chat message","some msg"); 
    }); 

    io.on('connection', function(socket){ 
    console.log('client connected'); 
    socket.on('pass data from HTTP request to the view', function(data){ 
    console.log(data); 
    }); 

    }); 

    app.use(router); 

    server.listen(port) 

Client.js

var socket = io(); 
    socket.on('chat message', function (message) { 
    //socket.emit('chat message', { my: 'world' }); 
    console.log('received '); 
    }); 

我如何通過數據從/ api /用戶/路由到套接字連接?謝謝你adavance。

回答

1

如果你想將數據發送到所有socket.io連接的客戶端,你可以這樣做:

io.emit("someMsg", someData); 

如果你想只發送到只有特定的socket.io連接,那麼你需要能夠通過socket.id獲取特定的套接字,或者通過其他方式記錄哪個套接字是哪個套接字。

+0

所以你的意思是把'io.emit(「someMsg」,someData);''裏面'/ api/users'路線?因爲問題是我如何獲取'/ api/users'路由中的數據到套接字連接,以便我實時顯示它。 – sparks

+0

@sparks - 對不起,但我不明白你想要發送數據的世衛組織,我不明白你什麼時候發送數據。請記住,您的服務器可以同時通過socket.io連接到許多客戶端。另外,如果您只想將數據發回給發出'/ api/users'請求的客戶端,那麼只需從API請求中返回該數據就簡單多了。這就是HTTP請求的用途。 – jfriend00

+0

因此,基本上,啓動'/ api/users'的客戶端是另一個外部應用程序。它只是提供數據,我希望將數據顯示給瀏覽器,供大家實時查看套接字連接。 – sparks

相關問題