【发布时间】:2021-08-10 01:40:04
【问题描述】:
我正在尝试使用 expo 连接到 socketio,并为 ios(通过 expo 应用程序隧道连接连接)和带有模拟器的 android 连接,当我尝试与这些连接时,套接字将无法连接,但如果我打开 expo 应用程序在 broswer 套接字连接有效,但在移动模拟器上无效.. 我该怎么办? 客户端代码
import { StatusBar } from 'expo-status-bar';
import React, { useEffect, useState } from 'react';
const io = require('socket.io-client');
import { SafeAreaProvider, SafeAreaView } from 'react-native-safe-area-context';
import useCachedResources from './hooks/useCachedResources';
import Navigation from './navigation';
import { Provider } from 'react-redux';
import { store } from './redux/store'
export default function App() {
const isLoadingComplete = useCachedResources();
const [data, setData] = useState(null)
useEffect(() => {
const socket = io('http://localhost:5000', {
});
socket.on("ping", (data: any) => {
setData(data)
})
}, [])
console.log(data)
if (!isLoadingComplete) {
return null;
} else {
return (
<Provider store={store}>
<SafeAreaProvider>
<StatusBar style="dark" />
<Navigation />
</SafeAreaProvider>
</Provider>
);
}
}
服务器代码
require("dotenv").config();
const express = require("express");
const http = require("http");
const socketIO = require('socket.io');
const app = express();
const server = http.createServer(app);
const PORT = process.env.PORT || 5000;
const io = socketIO(server);
io.on('connection', socket => {
console.log('client connected on websocket');
setInterval(() => {
io.emit('ping', { data: (new Date()) / 1 });
}, 1000);
});
server.listen(PORT, () => console.log(`Server Running on Port: http://localhost:${PORT}`));
【问题讨论】:
-
您正在尝试连接到本地主机:
'http://localhost:5000'- 这将指向您的手机。改用网络 ip
标签: node.js react-native socket.io expo