React Native 中的套接字 io
Socket io in React Native
我正在为我的 react-native 项目使用 Socket.io。 nodejs 服务器由 Heroku 托管。当我尝试从应用程序连接到服务器时,它工作得很好!!但是当我尝试发出一条消息时,我在接收 Reactjs 站点
上看不到它
这是反应本机应用程序的代码 ->
import { io } from "socket.io-client";
useEffect(() => {
if (tried === true) {
const socket = io("wss://my-domain-name.herokuapp.com");
socket.emit("finishPayment", "true");
setScanned(false);
}
}, [status]);
这是接收客户端代码(React js)->
socket.on("finishPayment", (msg) => {
console.log(msg);
});
连接已完成(在应用程序中),但未发出消息。
知道为什么会这样吗?
谢谢!
我解决了!!!这是最终代码 ->
import { Text, View, StyleSheet, Alert } from "react-native";
navigator.__defineGetter__("userAgent", function () { // you have to import rect native first !!
return "react-native";
});
import SocketIOClient from "socket.io-client/dist/socket.io.js";
//
useEffect(() => {
const socket = SocketIOClient("wss://site-name.herokuapp.com/", {
jsonp: false,
});
socket.on("connect", () => {
console.log("connected");
socket.emit("hello", "world");
});
socket.on("connect_error", (err) => {
console.log(err instanceof Error);
console.log(err.message);
});
}, []);
这样干净多了。
const io = require('socket.io-client/dist/socket.io');
const socket = io(
`API URL`,
{
transports: ['websocket'], // you need to explicitly tell it to use websockets
},
);
socket.on('connect', () => {
console.log('connected --------------- socket ---------------');
});
socket.on('connect_error', err => {
console.log(err.message);
});
在 android(本地)上,我的问题是我没有打开 mi socket serve 和 react native app 之间的连接。只需在终端上 运行 adb reverse tcp:3000 tcp:3000 即可打开服务器端口进行连接。我的服务器使用 3000,但在本地将其更改为您服务器的端口。
adb reverse tcp:3000 tcp:3000
我正在为我的 react-native 项目使用 Socket.io。 nodejs 服务器由 Heroku 托管。当我尝试从应用程序连接到服务器时,它工作得很好!!但是当我尝试发出一条消息时,我在接收 Reactjs 站点
上看不到它
这是反应本机应用程序的代码 ->
import { io } from "socket.io-client";
useEffect(() => {
if (tried === true) {
const socket = io("wss://my-domain-name.herokuapp.com");
socket.emit("finishPayment", "true");
setScanned(false);
}
}, [status]);
这是接收客户端代码(React js)->
socket.on("finishPayment", (msg) => {
console.log(msg);
});
连接已完成(在应用程序中),但未发出消息。
知道为什么会这样吗?
谢谢!
我解决了!!!这是最终代码 ->
import { Text, View, StyleSheet, Alert } from "react-native";
navigator.__defineGetter__("userAgent", function () { // you have to import rect native first !!
return "react-native";
});
import SocketIOClient from "socket.io-client/dist/socket.io.js";
//
useEffect(() => {
const socket = SocketIOClient("wss://site-name.herokuapp.com/", {
jsonp: false,
});
socket.on("connect", () => {
console.log("connected");
socket.emit("hello", "world");
});
socket.on("connect_error", (err) => {
console.log(err instanceof Error);
console.log(err.message);
});
}, []);
这样干净多了。
const io = require('socket.io-client/dist/socket.io');
const socket = io(
`API URL`,
{
transports: ['websocket'], // you need to explicitly tell it to use websockets
},
);
socket.on('connect', () => {
console.log('connected --------------- socket ---------------');
});
socket.on('connect_error', err => {
console.log(err.message);
});
在 android(本地)上,我的问题是我没有打开 mi socket serve 和 react native app 之间的连接。只需在终端上 运行 adb reverse tcp:3000 tcp:3000 即可打开服务器端口进行连接。我的服务器使用 3000,但在本地将其更改为您服务器的端口。
adb reverse tcp:3000 tcp:3000