2017-05-08 235 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類型。 奇怪的是服務器知道連接和斷開連接。

回答

0

你似乎並沒有把IO在客戶端變量定義。你必須爲socket io包含客戶端模塊。我希望一旦你這樣做就能正常工作。

+0

感謝您的回答,我只是沒有在問題中包含代碼。該問題已得到解決,我找到了一個解決方案: 對於Restify服務器,您必須定義socketio:true屬性。 –

+0

很高興你的問題已經解決:) –

相關問題