2016-03-24 4 views
2

私は[email protected]はネイティブと使用WebSocketを

import React, { AsyncStorage, Component, View, Text, WebView, WebSocket } from 'react-native'; 
import { Avatar, Divider, Subheader, COLOR } from 'react-native-material-design'; 

export default class Avatars extends Component { 
    _setWebSocket = (endpoint, sessionToken) => { 
     const ws = new WebSocket('wss://' + endPoint + '/api/live?authToken=' + sessionToken); 
     console.log('Setting socket: ' + 'wss://' + endpoint + '/api/live?authToken=' + sessionToken); 

と、このようなコードを持っていると私はからコードを呼んでいると反応しますコードとして動作:

console.log('Setting socket: ' + 'wss://' + endpoint + '/api/live?authToken=' + sessionToken); 

はトリガーされません。新しいWebSocketを作成する前にコンソールログを置くと、それが実行されます。私が間違っていることや、どのようにChromeがGenymotionと組み合わせて有用な情報を表示していないのでデバッグすることができますか?

+0

Genymotionのコンテキストメニューから "Debug JS remote"を使用していますか?そうでない場合は、コンソールに 'adb logcat *:S ReactNative:V ReactNativeJS:V'と入力してログを確認してください – antoine129

+0

私のコードはWebSocketを正常にインスタンス化しますが、不明な理由で' onerror'ハンドラを起動します:/ – antoine129

+0

socket.ioそれはうまく動作します:) – antoine129

答えて

0

あなたの構文が間違っています:あなたのコードには2通りの正しい方法があります。

class Avatars extends Component { 
    constructor(props) { 
    super(props) 
    this._setWebSocket = this._setWebSocket.bind(this) 
    } 

    _setWebSocket(endpoint, sessionToken) { 
    const ws = new WebSocket('wss://' + endPoint + '/api/live?authToken=' + sessionToken) 
    console.log('Setting socket: ' + 'wss://' + endpoint + '/api/live?authToken=' + sessionToken) 
    } 

    componentDidMount() { 
    this._setWebSocket(endpoint, token) 
    } 

    render() { 
    // put your code here 
    return (
     <View /> 
    ) 
    } 
} 

export default Avatars 

または

const Avatars = React.createClass({ 
    _setWebSocket: (endpoint, sessionToken) => { 
    const ws = new WebSocket('wss://' + endPoint + '/api/live?authToken=' + sessionToken) 
    console.log('Setting socket: ' + 'wss://' + endpoint + '/api/live?authToken=' + sessionToken) 
    }, 

    componentDidMount:() => { 
    this._setWebSocket(endpoint, token) 
    }, 

    render:() => { 
    // put your code here 
    return (
     <View /> 
    ) 
    }, 
}) 

export default Avatars 
0

問題を見つけるのは簡単だったし、おそらく私はそうのWebSocketを削除私はインポートするのWebSocketを置くが、これはネイティブのモジュールです...

import React, { AsyncStorage, Component, View, Text, WebView, WebSocket } from 'react-native'; 

疲れていましたインポート依存関係から助けました。

+1

他の誰かが私のようにこれに固執している場合は、 'WebSocket'インポートを完全に削除してください。それはグローバルであり、まったくインポートする必要はありません。 @Marceliこの答えからこのコード行を削除できますか?それは少し誤解を招く。ありがとう! –

+0

@LaneRettig +1同意 –

関連する問題