react-native socket.io 来自节点服务器的无尽请求
react-native socket.io endless requests from node server
我正在尝试一个非常简单的 expo 应用程序,只是为了了解如何使用 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
应用-https://github.com/MakGyv3r/socket_app.git
好的,问题解决了,socket.io 的依赖没有为 4.1.2 更新。
我正在尝试一个非常简单的 expo 应用程序,只是为了了解如何使用 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',
},
});
但出于某种原因,该应用程序正在无休止地请求从服务器进行连接:
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 应用-https://github.com/MakGyv3r/socket_app.git
好的,问题解决了,socket.io 的依赖没有为 4.1.2 更新。