在 react-native 上的 websocket uri 中传递参数不起作用

wed*_*v27 5 android facebook react-native react-native-android

我需要为我的 react-native 应用程序实现 websocket 连接。
我的问题是我总是得到:

无法设置WS://www.needseek.com:31337 partyId = “a3e75250-d1a3-11e7-9116-a7b8f75cfbc6” &sessionToken = “eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXJ0eUlkIjoiYTNlNzUyNTAtZDFhMy0xMWU3LTkxMTYtYTdiOGY3NWNmYmM2Iiwibm9uY2UiOiIxNTExNTkxNTQyNDE3MDAiLCJpYXQiOjE1MTE1OTE1NDJ9.HVfHRlXbcUZgkTFfL42YGd0LGtCUjnJuQ5ju3S1alOk” 作为默认原点头。

这是我使用的代码:

let wsUrl = 'ws://www.needseek.com:31337?partyId="' + user.profile.partyId + '"&sessionToken="'+ user.sessionToken + '"';
console.log( 'Websocket Url', wsUrl );

var ws = new WebSocket( wsUrl );

ws.onopen = () => {
  // connection opened
  ws.send('Connection open..');
  console.log('Connection open..');
};

ws.onmessage = (e) => {
  // a message was received
  console.log(e.data);
};

ws.onerror = (e) => {
  // an error occurred
  console.log(e.message);
};

ws.onclose = (e) => {
  // connection closed
  console.log(e.code, e.reason);
};
Run Code Online (Sandbox Code Playgroud)

另外,我阅读了关于实现 websocket 的 react-native 文档 -> https://facebook.github.io/react-native/docs/network.html

wed*_*v27 6

我找到了答案。只需在将 websocket url 传递给 WebSocket 实例之前使用 encodeURI() 语法。

let wsUrl = encodeURI('ws://www.needseek.com:31337?partyId="' + user.profile.partyId + '"&sessionToken="'+ user.sessionToken + '"');
console.log( 'Websocket Url', wsUrl );

var ws = new WebSocket( wsUrl );
Run Code Online (Sandbox Code Playgroud)

这对我有用。