2017-05-08 2 views
0

Ich möchte versuchen, eine Verbindung zu meinem Node.js socket.io-Server von einem ReactJS-Client herzustellen. Der Server protokolliert, dass der Benutzer die Verbindung herstellt/trennt, der Client scheint jedoch eine Zeitüberschreitung zu haben (seine Zustände werden als getrennt angezeigt).(Restify, ReactJS, Node.js) Socket.io Client-Status ist getrennt, Server protokolliert die Verbindung

Hier sind die relevanten Schnipsel: Server

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) 
}) 

Dann öffne ich die app, es protokolliert das Ereignis ‚user‘ verbunden ist, aber die Client-Seite scheint die Verbindung nicht bewusst zu sein.

Reagieren Client-Seite:

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) 
    }) 
} 

Ich habe versucht, die Client-Seite Debuggen, wie es scheint es nie das Paket für eine Verbindungsbestätigung erhält.

Was scheint das Problem zu sein? Ich habe versucht, jede Verbindung URL-Typen auf der Client-Seite. Die seltsame Sache ist, dass der Server die Verbindung und Trennung bekannt ist.

Antwort

1

Das Problem war, dass für die Wiederherstellung müssen Sie die socketio: True-Parameter beim Erstellen der Restify-Server übergeben. Also muss man es so erstellen:

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

Quelle:

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

0

Sie scheinen nicht io Variable in Client-Seite definiert zu haben. Sie müssen ein clientseitiges Modul für den Socket io einschließen. Ich hoffe, es funktioniert gut, wenn Sie das tun.

+0

Vielen Dank für Ihre Antwort, ich habe nur den Code dafür in der Frage nicht enthalten. Das Problem wurde mit einer Lösung behoben, die ich gefunden habe: Für einen Restify-Server müssen Sie die Eigenschaft socketio: true definieren. –

+0

Froh, dass Ihr Problem gelöst wurde :) –

Verwandte Themen