2016-04-22 14 views
0

私は、HTTP GETリクエスト/api/users?data=68を介して別のアプリケーションからのリクエストを受信し、リアルタイムでデータを表示する必要のあるノードアプリケーションを持っています。 HTTPリクエスト。私はsocket.ioで動作するノードのアプリを持っている。しかし、今私は、HTTP request.Hereを処理したいと開始するにはノード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/users/routeからソケットへの接続?ありがとうございます。

答えて

1

あなたはすべてのsocket.io接続されたクライアントにデータを送信したい場合は、あなたが行うことができます:

io.emit("someMsg", someData); 

だけ特定socket.io接続にのみ送信したい場合は、あなたがする必要がありますその特定のソケットを得ることができるかどうかは、socket.idや他の方法でどのソケットがどのようなものかを把握することができます。

+0

あなたは 'io.emit(" someMsg "、someData);' inside '/ api/users'ルートを指定するのですか?問題は、 '/ api/users'のデータをソケット接続にどのようにして、リアルタイムで表示するのかということです。 – sparks

+0

@sparks - 申し訳ありませんが、データを送信しようとしているユーザーがわからず、データを送信するときにはわかりません。あなたのサーバは同時にsocket.ioを介して多くのクライアントに接続することができます。また、 '/ api/users'リクエストを発行したクライアントだけにデータを戻したい場合は、APIリクエストからそのデータを返すほうがずっと簡単です。これが、HTTPリクエストのためのものです。 – jfriend00

+0

基本的に '/ api/users'を起動するクライアントは別の外部アプリです。それはデータを供給するだけで、私はリアルタイムでソケット接続を介して誰もが見るためにブラウザにデータを表示したいと思います。 – sparks

関連する問題