我在后端中使用socket.io,它在前端上可以正常使用javascript使用socket.io-client进行工作,但是当我尝试通过React Native连接socket.io时,我得到了错误:
Vanilla JS(完美工作):
# delete all instances of whatever, if-and-only-if they aren't reachable from a gc root nix-store --delete /nix/store/*-whatever
反应本机代码:(不起作用)
<script> var socket = io.connect('http://localhost:9092'); socket.on('connect', function() { output('<span class="connect-msg">Client has connected to the server!</span>'); });
错误:
websocket错误
堆栈跟踪:中的node_modules / engine.io-client / lib / transport.js:67:22 onError
中
node_modules / engine.io-client / lib / transports / websocket.js:157:17在 onerror node_modules / event-target-shim / lib / event-target.js:172:43在 dispatchEvent
node_modules / react-native / Libraries / WebSocket / WebSocket.js:290:10 in
node_modules / react-native / Libraries / vendor / emitter / EventEmitter.js:191:12 在发出
node_modules / react-native / Libraries / BatchedBridge / MessageQueue.js:349:47 在__callFunction
中 node_modules / react-native / Libraries / BatchedBridge / MessageQueue.js:106:26 在
node_modules / react-native / Libraries / BatchedBridge / MessageQueue.js:297:10 在__guard
中 node_modules / react-native / Libraries / BatchedBridge / MessageQueue.js:105:17 在callFunctionReturnFlushedQueue
我在后端使用https://github.com/mrniko/netty-socketio。
已使用expo-cli创建了React Native应用。
答案 0 :(得分:0)
代替使用localhost尝试获取IP 请记住,手机和PC的IP都应该相同,但是端口不同,这可能会解决您的错误
this.socket = io.connect('http://localhost:9092'}
到
this.socket = io.connect('http://192.x.x.x.x:9092'}
答案 1 :(得分:0)
我认为对于移动设备,您必须使用https才能使其正常工作。
答案 2 :(得分:0)
遇到类似问题,我使用的是 socket.io-client 版本 3
使用以下命令将您的版本降级到 2.1.1:
npm i socket.io-client@2.1.1
这应该开始工作