2016-05-29 25 views
2

私は単純なsocket.ioサーバーを作成し、ネイティブプロジェクトに反応してテストしますが、React Nativeのsocket.ioはまったく動作しません。 コンソールに "socket.io-client"と表示され、うまく読み込まれました。socket.ioを使用して単純なHTMLファイルを作成しましたが、動作しますが、React Nativeだけが動作しません。 私はReactネイティブ0.26.2とsocket.io 1.4.6を使用しています。だから、私は代わりのWebSocketのAJAXロングポーリングを起こしsocket.ioとネイティブリアクト使用して、聞いてReact Native with socket.io

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

import "./userAgent"; //window.navigator.userAgent = "react-native"; 

const io = require('socket.io-client/socket.io'); 

class SocketChat extends Component { 
    constructor(props) { 
     super(props); 
     this.socket = io('localhost:3000', { jsonp: false }); 
     this.state = { 
      text: null 
     }; 
    } 
    ... 
} 

が、これは私のサーバーのコードです:

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

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

http.listen(3000,() => { 
    console.log('server started on 3000'); 
}); 

// web testing 
app.get('/', (req, res, next) => { 
    res.sendFile(__dirname + '/index.html'); 
}); 

、これはRNコードです私は 'ユーザーエージェント'のトリックを追加しました。それが動作しているかどうか、接続さえ確立されていませんが、ブラウザで試してみるとうまくいきます。私は何をすべきか教えてくれてとても感謝しています。

+0

私は 'ws'モジュールでwebsocketサーバーを作成し、websocketを直接(正式に反応ネイティブでサポートされています)使用するようにコードを変更します。 – modernator

+0

iOSでチェックしたところ、うまくいきました。だから私は私のアンドロイドデバイス(仮想デバイスではない)でテストしたが、うまくいかなかった。私は何か問題があると思う。どんなアドバイスも感謝します。 – modernator

答えて

0

別のwebsocketモジュールを置き換えることでこれを解決しました。 Socket.IOはAndroid上では動作しません。誰かが私に言ったように、Socket.ioはノードネイティブモジュールを内部的に使用しているため、プロダクションビルド後には動作しません。