2017-05-08 11 views
0

ReactJSクライアントからNode.js socket.ioサーバーに接続しようとします。 サーバはユーザの接続/切断をログに記録しますが、クライアントはタイムアウトしているようです(状態は切断されていると言います)。ここで (Restify、ReactJS、Node.js)Socket.ioクライアントの状態が切断され、サーバーが接続をログに記録します。

は、関連するスニペットです: サーバー

var server = restify.createServer() 
const socketio = require('socket.io') 
const io= socketio.listen(server) 
io.sockets.on('connection', function(socket){ 
    console.log('a user connected'); 
    socket.emit('server event',{'foo':'bar'}) 

    socket.on('disconnect',function(){ 
    console.log('user disconnected'); 
}); 
socket.on('client event',function(data){ 
    console.log(data) 
}) 
}) 

server.listen(8999, function() { 
    console.log('%s listening at %s', server.name, server.url) 
}) 

は、その後、私はアプリを開いて、それは、「ユーザーが接続されている」イベントをログに記録しますが、クライアント側では、接続を認識していないようです。

は、クライアント側に反応:

componentDidMount(){ 

    try { 
    this.socket= io.connect('localhost:8999') 
    this.socket.on('connected',function(socket){ 
     console.log('connected') 
    }) 
    this.socket.emit('client event',{value: 'valami tortent'}) 
    }catch(error){ 
     console.log(error) 
    } 
    this.socket.on('server event',function(data){ 
     console.log(data) 
    }) 
} 

私は、クライアント側のデバッグを試みたが、接続確認用のパケットを受信したことがないそうです。

どのような問題があるようですか?私はクライアント側ですべての接続URLタイプを試しました。 奇妙なことは、サーバーが接続と切断を認識していることです。

答えて

1

問題は、復元するために、サーバーを作成するときにsocket0:trueパラメーター を渡す必要があります。 だから、あなたはそのようにそれを作成する必要があります。

var server = restify.createServer({ 
    socketio:true 
}) 

出典:

https://github.com/restify/node-restify/issues/717

0

あなたは、クライアント側でIO変数定義されているようには見えません。ソケットioのクライアント側モジュールを含める必要があります。私はそれがうまくいくとうまくいくことを願っています。

+0

あなたの答えをありがとう、私はちょうど質問のコードを含まれていませんでした。この問題は、見つかった解決策で修正されました。 Restifyサーバーでは、socketio:trueプロパティーを定義する必要があります。 –

+0

あなたの問題が解決されてうれしいこと:) –

関連する問題