react-native WebSocket & nodejs WebSocket

Posted

技术标签:

【中文标题】react-native WebSocket & nodejs WebSocket【英文标题】: 【发布时间】:2021-09-08 06:54:24 【问题描述】:

NodeJS:

const WebSocket = require('ws');
const ws = new WebSocket('wss://siteurl');

ws.on('open', function open() 
    ws.send('');
);

ws.on('message', function incoming(message) 
    console.log(message);
);

反应原生

let connection = new WebSocket('wss://siteurl');

connection.onopen = () => 
            connection.send('');
        ;

connection.onmessage = ((event) => 
            console.log(event);
        );

connection.onerror = (event) => 
            console.log(event);
        

NodeJS 工作正常,但 react-native 返回“无法解析主机”。 android Stuio 模拟器,以npm run android 开头。

任何想法为什么会发生?

更新:

const socket = new WebSocket('wss://siteurl');
        
        socket.onopen = () => 
            console.log('Socket connected!');
            socket.send('');
        

        socket.onmessage = (message) => 
            console.log(`Message:\n`, message.data);
        
    ```
Browser works fine too

【问题讨论】:

【参考方案1】:

你可以使用socket.io-client

socket.io-client Document

示例
// ES6 import or TypeScript
import  io  from "socket.io-client";
// CommonJS
const io = require("socket.io-client");

// the following forms are similar
const socket = io("https://server-domain.com");
const socket = io("wss://server-domain.com");
const socket = io("server-domain.com"); // only in the browser when the page is served over https

socket.on('message', (event) => 
        console.log(event);
);

【讨论】:

@DaadyDeer 如果我的回答有用,请点击它左侧的点赞按钮 (▲)。如果它回答了您的问题,请单击复选标记 (✓) 接受它。这样其他人就知道你已经(充分地)得到了帮助。另请参阅当有人回答我的问题时我该怎么办? 如果服务器不使用socket.io,是否可以连接?它仍然不适用于[Error: xhr poll error] @DaadyDeer node.js服务器也要统一到socket.io上。

以上是关于react-native WebSocket & nodejs WebSocket的主要内容,如果未能解决你的问题,请参考以下文章

React-native websocket TLS连接

React-Native 上的连接升级

react-native this.setState 导致代码停止运行

为啥 MongooseIM 会在 60 秒后关闭 websocket 连接?

使用 Adonisjs websocket 的 400 错误请求

React Native iOS 调试物理设备 WebSocket 连接失败