2016-03-24 43 views
2

我有這樣的代碼[email protected]陣營和本地人使用的WebSockets

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

,我從調用代碼:

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

我有問題,試圖讓WebSockets的是作爲代碼工作:

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

永遠不會被觸發。如果我在創建新的WebSocket之前放置了控制檯日誌,它將運行。我做錯了什麼,我該如何調試,因爲Chrome並沒有與Genymotion結合顯示有用的信息。

+0

您是否在Genymotion的上下文菜單中使用「遠程調試JS」?如果沒有,請在控制檯中輸入'adb logcat *:S ReactNative:V ReactNativeJS:V'來查看日誌 – antoine129

+0

我的代碼成功實例化了一個WebSocket,但觸發了它的'onerror'處理程序,原因不明:/ – antoine129

+0

使用socket.io並且它工作正常:) – antoine129

回答

0

您的語法錯誤:這裏有兩種不同的正確的代碼方式。

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

的問題是很容易找到,可能是我累了

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

我把WebSocket的需要進口,但這是本機模塊... 因此,移除的WebSocket從進口依賴幫助。

+1

如果其他人像我一樣被卡住,請徹底刪除'WebSocket'導入。這是一個全球性的,根本不需要進口。 @Marceli能從這個答案中刪除這行代碼嗎?這有點誤導。謝謝! –

+0

@LaneRettig +1同意 –