Socket.io-client: 反応ネイティブで接続および再接続できません

作成日 2018年03月04日  ·  13コメント  ·  ソース: socketio/socket.io-client

私はこのlibを1年間使用していましたが、すべてが順調に進んでいます。
私はRN0.45、0.48、そして0.53.0を使い始めました。 すべてが完璧です。

ネイティブ0.53.3に反応するようにアップグレードするまで、この問題が発生します。
これは私が得たエラーです
{"type":"TransportError","description":{"line":"76","collumn":"7944","sourceURL":"index.android.bundle"}}
時々私は「タイムアウト」になりました

コードは変更せず、依存関係も変更しませんでした。
私がしたこと:

  1. node_modulesフォルダーを削除する
  2. package.jsonで、RNを変更してバージョン番号を変更します。
  3. 「NPMインストール」を実行します

React Nativeの問題かもしれないと思ったので、0.53.0を使用していたプレビューバージョンにロールバックします。 しかし、この問題はまだ存在しています。 再び0.48にロールバックしますが、問題はまだ残っています。 等々。

私はsocket.io-client2.0.3を使用しています(2.0.4を試しましたが、役に立ちません)

  • [x]バグを報告する
  • []機能をリクエストする

設定

  • OS:Windows 1064ビット
  • ブラウザ:React Native
  • socket.ioバージョン:2.0.3

何が起こっているのかわかりません。
誰かが助けてくれることを願っています。 ありがとうございました

最も参考になるコメント

iOSのWebSocket(socket.io-client、trnasport:['websocket'])をWebサーバーに接続する際に問題が発生します。
興味深いことに、デバイスで[JSをリモートでデバッグ]をオンにすると機能します。
これは、iOSのreact-nativeバージョンで問題になる可能性があります。 誰かが同じ問題に直面しているかどうかだけ興味があります。

全てのコメント13件

+1

' transports': ['websocket'],オプションを追加してこれを解決しました

  this.socket = openSocket(socketUrl,{
          'reconnection': true,
          'reconnectionDelay': 500,
      'reconnectionAttempts': Infinity, 
      'transports': ['websocket'],            
      });

しかし、そのオプションは必須ではありません、私は正しいですか?
そのため、このオプションを省略すると問題が発生するため、この問題は未解決のままにしておきます。

サーバーにエクスプレスを追加し、いくつかのルートを追加した後、この問題が発生しました
そして私が追加したとき
'transports':['websocket']、
正常に動作しますが、しばらくすると切断され、
PS:バックラウンドなどでアプリを操作しているときに切断されます。

再現する方法を教えてください。 (私は運が悪かったjestで試しました:https://github.com/darrachequesne/jest/commits/test/socket.io)

トランスポートをwebsocketに設定することも私の問題を解決しましたが、もちろんhttpポーリングをオフにします。これは残念なことです。 再現する手順:

  1. ソケットを取り付けます。 React Nativeプロジェクトの
  2. ノードサーバーが[email protected]を実行していることを確認し、デバッグログを有効にします
    期待される:確立する接続(iOSシミュレーターは正常に接続します)
    実際:socket ioは、「parseerror」のコードでクライアントにconnect_errorを発行します。 調べてみると、指定されたxhr.responseは空の文字列であり、socketioはこれを解析エラーとして解釈します。 解析に失敗したメッセージは、socketioサーバーからの「pong」メッセージのようです。

iOSでも同じ問題があり、オプション'transports': ['websocket']を追加するという一時的な解決策もうまくいきました。

構成:

  • socket.io 2.1.1
  • 反応16.3.2
  • 反応ネイティブ0.52.0
  • iOS 11.2

私はreactNativeandroidにsocket.ioを接続しようとしています。 ただし、接続されていません。 いくつかのチュートリアルを試しましたが、iOSは正常に機能していますが、Androidは機能していません。 'transports':['websocket']を試しましたが、まだ機能していません:( ..提案、アイデア、サンプルコードはありますか?

私のバックエンドはNodejsで、socket.ioも使用しています。 ありがとう!

私はreactNativeandroidにsocket.ioを接続しようとしています。 ただし、接続されていません。 いくつかのチュートリアルを試しましたが、iOSは正常に機能していますが、Androidは機能していません。 'transports':['websocket']を試しましたが、まだ機能していません:( ..提案、アイデア、サンプルコードはありますか?

私のバックエンドはNodejsで、socket.ioも使用しています。 ありがとう!
これに対する解決策を見つけましたか?Androidのreact-nativeでも同じ問題があります。

同じ問題

こんにちはみんな私はソケットに問題があります

チェックするとタイムアウトが表示されます

socket.on( 'connect_error'、(err)=> {
console.log( 'error123'、err)

これが私のコードです

ネイティブ側に反応するため

'socket.io-client'からioをインポートします。
var socket = io.connect( 'http:// localhost:8888'、{transports:['websocket']、upgrade:false});
socket.on( 'news'、function(data){
console.log(data);
socket.emit( 'my other event'、{my: 'data'});
});

   socket.on('connect_error', (err) => {
    console.log('error123',err)
  });

サーバ側:

var app = require( 'express')();
var server = require( 'http')。Server(app);
var io = require( 'socket.io')(server);

server.listen(8888);
//警告:app.listen(80)はここでは機能しません!

app.get( '/'、function(req、res){
res.sendFile(__ dirname + '/ index.html');
});

io.on( '接続'、関数(ソケット){
socket.emit( 'news'、{hello: 'world'});
socket.on( 'my other event'、function(data){
console.log(data);
});
});

index.html





WebScockets 101

私はすでに在庫が必要です

私でさえ、Androidでsocket-ioを接続する際に問題があります。 RNはクライアントとして接続できますが、react Webアプリでも同じですが、reactモバイルアプリでは接続できません。 解決策を提案してください。

socket.io-clientを1.7.2にダウングレードしてみてください、それは私のために働きます。

iOSのWebSocket(socket.io-client、trnasport:['websocket'])をWebサーバーに接続する際に問題が発生します。
興味深いことに、デバイスで[JSをリモートでデバッグ]をオンにすると機能します。
これは、iOSのreact-nativeバージョンで問題になる可能性があります。 誰かが同じ問題に直面しているかどうかだけ興味があります。

このページは役に立ちましたか?
0 / 5 - 0 評価