2016-09-10 22 views
5

私はReact Nativeを最近学習していて、Socket.IOの使用に問題があります。私は、最新のネイティブとCLI(ちょうど更新)反応し、これは私のコードで使用しています:Socket.ioがAndroidでReact Nativeと連携していません

import React, { Component } from 'react'; 
import { 
    AppRegistry, 
    StyleSheet, 
    Text, 
    View 
} from 'react-native'; 

window.navigator.userAgent = 'react-native'; 

const io = require('socket.io-client/socket.io'); 
const socket = io('localhost:3000', { jsonp: false }); 
socket.connect(); 

class wschat extends Component { ... } 

あなたが見ることができ、コードは非常に簡単ではない、と何のエラー。これは私のサーバーコードです:

"use strict"; 
const express = require('express'); 
const app = express(); 
const http = require('http').Server(app); 
const io = require('socket.io')(http); 

http.listen(3000,() => { 
    console.log('WSChat Server for React-Native listening on port 3000'); 
}); 

io.on('connection', (socket) => { 
    console.log('connected: ' + socket.id); 
}); 

実際にはiosで動作しますが、アンドロイドでは動作しません。私はリモートデバッガを有効にして、プロパティをチェックし、Socket.IOそれ自体がうまくロードされたが接続は確立されていなかった。 「接続」イベントが発生したときにコンソールにログオンすると、サーバーコードが表示されます。

私はAVD(nexus5)と私のデバイス(LG G4 optimus)を使用しましたが、どちらも動作しません。私は何が欠けていますか?どんなアドバイスも非常に感謝しています!

答えて

3

実行中のVM react-nativeはnodejではありません。これはすなわち、

あなたが順番にnodejsネイティブモジュール( httpfscrypto、など)に依存しているよう socket.io-clientなどのパッケージに頼ることができないことを意味しますsocket.io-クライアントは、エンジン-IOに依存しているとそこには次のようなものがあります:どのようなよこしまなのですが、それは かもしれないので、限り、あなたはDEV-モードにしているように、iOSのは、nodejsによって支えられていることである

var http = require('http'); 

すべて同じようにを見てください、しかし、あなたがアプリをコンパイルする場合、それはしません。

react-native-socketioをチェックしてください。悲しいことに(2016-09-12現在)、プロジェクトは十分に維持されていませんが、動作させることができます。

0

反応するネイティブプロジェクトにsocket ioを使用する場合は、feathers js socket ioを使用することをお勧めします。

https://docs.feathersjs.com/api/socketio.html

あなたの中から選択するためのオプションの多くを得たように、このフレームワークは、プライマス、Express、およびRESTをサポートしています。これが役立つことを願っています。

関連する問題