2017-10-17 10 views
0

socket.ioライブラリを介してバックエンドとのソケット接続を作成しようとしています。
これは何ですか - 私は長いポーリングオプションをオフにして、カスタムパスを設定する必要があります。しかし、私はそれらを両方とも設定することはできません。
私はこの方法を試しあれば、私はtransportspathを設定しますが、いないよ:socket.ioのプロパティトランスポートとパスを設定する

this.socket = io(
    'wss://some-url.com', 
    { path: '/v1/url/to/websockets' }, 
    { transports: [ 'websocket' ] } 
); 

とライブラリがサーバーによって拒否されるロングポーリング接続(Iドンをしようとしています)へのアクセス権はありますが、パスは正しいでしょう。
しかし、私は最初transportsプロパティを順序を変更して設定しようとしている場合、ライブラリはpathプロパティを省略し、フロントエンドが正しくない
wss://some-url.com/socket.io/?EIO=3&transport=websocket
URLへのリクエストを送信します。
transportプロパティがURLを変更する(それがクエリのパラメータとして設定される)ため、競合していることがわかりますが、私は理解できません - パスとトランスポートのプロパティを設定するにはどうすればよいですか残念。
公式ドキュメントとここで解決策が見つかりませんでした。
アイデア

答えて

1

あなたsynatxが間違って、正しい構文

this.socket = io(
       'wss://some-url.com', 
       { 
        path :'/v1/url/to/websockets', 
        transports: ['websocket'] 
       }); 

即ち両方が(その場合、コールthis.socket.connectで同じオブジェクト

+0

内にあるべきです)。接続をしません – WeekendMan

+0

私が言ったようにthis.socket.connect()のコードは動きません。 "ハンドシェイク"要求は表示されません。私は "onconnect"イベントを取得しません(もちろん) – WeekendMan

+0

上記のコードでは、クライアントはソケットサーバーに接続されています。なぜthis.socket.connect()を呼び出したのですか? Iwebsocketトランスポートが使用されているときのハンドシェイクに関しては、101として応答するHTTPリクエストは1つしかありません。その後、私の終わりにconnectイベントが正しく呼び出されています。 –

関連する問題