2017-06-15 5 views
1

Ich versuche, einen Websocket-Client einzurichten, der über JSON mit einem Websever kommuniziert. Ich finde keine guten Beispiele online.Native Websocket-JSON-Kommunikation reaktivieren

Ich fand nur den Code online:

var ws = new WebSocket('ws://host.com/path'); 

ws.onopen =() => { 
    // connection opened 
    ws.send('something'); // send a message 
}; 

ws.onmessage = (e) => { 
    // a message was received 
    console.log(e.data); 
}; 

ws.onerror = (e) => { 
    // an error occurred 
    console.log(e.message); 
}; 

ws.onclose = (e) => { 
    // connection closed 
    console.log(e.code, e.reason); 
}; 

Ich weiß nicht, wie Sie diesen Code in meinen app-Code zu integrieren, zu funktionieren. Muss ich einige Pakete dafür installieren? Ich mache ein Projekt für mein Studium, und am Ende sollte ich eine Quiz-App haben, die sich mit einem Server verbindet, um die Fragen und Antworten für das Spiel zu bekommen.

Danke für Anny Hilfe!

Antwort

0

Sie benötigen nichts anderes, um mit einem WebSocket in reaktionsnativen (oder einer relativ neuen JS-Umgebung for that matter) zu arbeiten. Das Beispiel, das Sie gefunden haben, deckt so ziemlich alles ab, was Sie benötigen, um loszulegen. Im nächsten Schritt binden Sie das an Ihre React-Logik. Zum Beispiel können Sie eine WebSocketController Komponente erstellen, die (Details weggelassen) wie dieses

class WebSocketController extends React.Component { 
    componentDidMount(){ 
    this.ws = new WebSocket('ws://host.com/path'); 
    this.ws.onmessage = this.handleMessage.bind(this); 
    this.ws.onerror = //... 
    } 
    handleMessage(e){ 
    // dispatch event (á la redux, flux), or do something else 
    } 
    componentWillUnmount(){ 
    // close WS 
    } 
} 

Render diese in Ihrer React Hierarchie aussehen würde, und es wird entlang der Rest der Komponenten gestartet werden. Wenn Sie etwas Spezifischeres brauchen, lassen Sie es uns wissen.

+0

Ich implementierte Ihren Code mit console.log (e.data) in der Methode handleMessage (e), nur um zu sehen, ob es funktioniert, aber ich bekomme diesen Fehler: FEHLER Packager kann nicht auf Port 8081 hören Höchstwahrscheinlich ein anderer Prozess bereits diesen Port mit dem folgenden Befehl ausführen, um herauszufinden, welcher Prozess: lsof -i: 8081 Dann können Sie entweder herunterfahren den anderen Prozess: kill -9 oder laufen Verpacker auf verschiedenen Hafen. – Hang

+0

Das ist ein anderer Fehler, der normalerweise durch Überprüfung der Ausgabe von lsof behoben wird. Wahrscheinlich haben Sie eine andere Instanz des Packagers, die dort läuft. – martinarroyo

+0

Ok, dieser Fehler ist nicht mehr vorhanden, aber wenn ich versuche, meine App mit dem implementierten Code mit console.log (e.data) auszuführen, zeigt es mir nichts auf der Konsole an. In meiner IDE Webstorm-Konsole wechselt es von dieser Nachricht ab [intellij] Erzeugt eine Verbindung mit dem Proxy (Packager) zur React Native-Anwendung zu dieser Nachricht [intellij] Verbindung vom Proxy (Packager) zur React Native-Anwendung getrennt. Erneuter Verbindungsaufbau wird versucht ... – Hang

Verwandte Themen