react-native socket.io 来自节点服务器的无尽请求
Posted
技术标签:
【中文标题】react-native socket.io 来自节点服务器的无尽请求【英文标题】:react-native socket.io endless requests from node server 【发布时间】:2021-08-10 02:38:48 【问题描述】:我正在尝试一个非常简单的 expo App,只是为了看看如何使用 socket.io 并将其连接到服务器,这是我的 App.js-
import StatusBar from 'expo-status-bar';
import React, useEffect, useState from 'react';
import StyleSheet, Text, View from 'react-native';
import io from "socket.io-client";
export const socket = io('http://0f03e059b74d.ngrok.io',
transports: ["websocket"]
)
export default function App()
return (
<View style=styles.container>
<Text>Open up App.js to start working on your app!</Text>
<StatusBar style="auto" />
</View>
);
const styles = StyleSheet.create(
container:
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
,
);
但由于某种原因,该应用程序正在从服务器发出无穷无尽的连接请求: 而且我不知道如何阻止这种情况并且只有一个连接? 这是 server.js-
const express = require('express');
const socket = require('socket.io');
const dotenv = require('dotenv');
const morgan = require('morgan');
const colors = require('colors');
const cookieParser = require('cookie-parser');
const errorHandler = require('./middleware/error');
const connectDB = require('./config/db.js');
const mongoose = require('mongoose');
let compression = require('compression');
let helmet = require('helmet');
//load env vars
dotenv.config( path: './config/config.env' );
// connect to data base
connectDB();
// Routs files
const auth = require('./routes/auth');
const app = express();
//body parser to read from req.body
app.use(express.json());
//Compress all routes
app.use(compression());
//protect against vulnerabilities
app.use(helmet());
// prod logging middleware
if (process.env.NODE_ENV === `development`)
app.use(morgan(`dev`));
//mount ruters
app.use('/api/v1/auth', auth);
app.use(errorHandler);
const PORT = process.env.PORT || 5000;
const server = app.listen(
PORT,
console.log(
`Server running in $process.env.NODE_ENV mode on port $PORT`.yellow.bold
)
);
let io = socket(server);
app.set('socketio', io);
io.sockets.on('connection', function (socket)
console.log('try to connect');
console.log('made socket connection', socket.id);
socket.on('disconnect', reason =>
console.log('user disconnected');
);
);
// handle unhandled promise rejections
process.on('unhandledRejection', (err, Promise) =>
console.log(`Errore:$err.massage`.red);
//close server & exit process
server.close(() => process.exit(1));
);
如果能得到任何帮助,我将不胜感激。 服务器 - https://github.com/MakGyv3r/socket_api.git app-https://github.com/MakGyv3r/socket_app.git
【问题讨论】:
您确定您粘贴了准确的代码吗?看起来它正在尝试连接到与example.com
不同的域,这不应该发生。
example.com 只是一个 URL 的示例,我使用 ngrok URL 连接到服务器。我将 ngrok url 放入代码中。
我认为最好将样本发布在某个沙盒中(例如 codesandbox.io ),否则我认为我们无能为力..
我连接了 git 链接服务器 - github.com/MakGyv3r/socket_api.git app- github.com/MakGyv3r/socket_app.git
我尝试将应用添加到发送框,但它无法识别 react-native 依赖项。
【参考方案1】:
好的,问题解决了,socket.io的依赖没有更新到4.1.2。
【讨论】:
以上是关于react-native socket.io 来自节点服务器的无尽请求的主要内容,如果未能解决你的问题,请参考以下文章