2017-06-15 9 views
1

JSON経由でWebセーバーと通信するWebsocketクライアントを設定しようとしています。私は良い例をオンラインで見つけることはありません。ReactネイティブWebsocket JSON通信

は、私はオンラインでのみ、このコードを見つけました:

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

私が機能するために私のアプリ-コードにこのコードを統合する方法がわかりません。 いくつかのパッケージをインストールする必要がありますか? 私は勉強のためのプロジェクトをやっています。最後に、ゲームの質問と回答を得るためにサーバーに接続するクイズアプリが必要です。

anny helpありがとう!

答えて

0

反応ネイティブ(または比較的新しいJS環境for that matter)でWebSocketを操作する必要はありません。あなたが見つけた例は、あなたが始めなければならないものは何でもカバーしています。次のステップは、あなたのReactロジックにバインドすることです。たとえば、あなたはあなたのリアクト階層内でこれをレンダリングこの

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

のように(省略詳細)になりますWebSocketControllerコンポーネントを作成することができ、それがあなたのコンポーネントの残りの部分に沿って開始されます。より具体的なものが必要な場合は、お知らせください。

+0

handleMessage(e)メソッドでconsole.log(e.data)を使用してコードを実装しましたが、動作するかどうかを確認するのにこのエラーが表示されます:ERROR Packagerはポート8081でリッスンできませんでした -i lsofを :プロセスがすでにそのプロセスを調べるために、次のコマンドを実行します このポートを使用している 殺す-9 または異なる上でパッケージャを実行します。そして、8081 、あなたは他のプロセスをシャットダウンしますかポート。 – Hang

+0

これは通常、lsofの出力をチェックすることで修正される、異なるエラーです。おそらくあなたはそこで走っているパッケージャの別のインスタンスを持っているでしょう。 – martinarroyo

+0

このエラーはもう発生しませんが、console.log(e.data)で実装されたコードでアプリケーションを実行しようとすると、コンソールに何も表示されません。私のIDE Webstormコンソールで、このメッセージ[intellij]と交互に表示されます。Proxy(Packager)とReactネイティブアプリケーションの接続を確立しました このメッセージ [intellij] Proxy(Packager)からReact Nativeアプリケーションへの接続が切断されました。すぐに再接続を再試行してください... – Hang

関連する問題