node.js - socket.io 在客户端刷新页面后失败
问题描述
我在反应节点项目中使用 socket.io。当页面刷新时,我遇到了套接字不刷新的问题。
它首先在服务器和反应开发服务器第一次运行时工作。使用套接字后(从服务器发出一些东西),刷新浏览器页面会导致 web socket.js 文件出错:
WebSocket 连接到“ws://localhost:4000/socket.io/?EIO=3&transport=websocket&sid=XTE63CeWdp676cRXAAAF”失败:WebSocket 握手期间出错:意外响应代码:400
这是我在客户端和服务器中使用的代码:
服务器 :
const express = require('express');
const socketconfig = require('./socket.io');
class Server {
constructor({ config, router, logger, }) {
this.config = config;
this.logger = logger;
this.express = express();
this.express.disable('x-powered-by');
this.express.use(router);
}
start() {
return new Promise((resolve) => {
const http = this.express
.listen(this.config.web.port, () => {
const { port } = http.address();
this.logger.info(`[p ${process.pid}] Listening at port ${port}`);
resolve();
});
var io = require('socket.io').listen(http,function () {
console.log("I AM CONNECTIONG")
});
this.freshio=io.sockets;
socketconfig.setOnConnection(this.freshio, ()=>{
console.log('Connexion COnditions are set');
});
socketconfig.setOnDisconnect(this.freshio, ()=>{
console.log('client disconnected');
});
this.clients = socketconfig.clients;
});
}
}
module.exports = Server;
start()
启动服务器时将调用该方法。该socketConfig
文件只是一个用于保存客户端和设置条件的工具包,它不会干扰任何东西。
客户 :
import openSocket from 'socket.io-client';
let url = Store.config.socketserverurl + ":" + Store.config.socketserverport;
const socket = openSocket.connect(url);
Store 只是将配置文件链接到它的通量存储。
我曾尝试添加使用 socket.io 的 webSockets 方法而不是 http 方法,但由于另一个问题螺旋式上升,这是徒劳的。
我应该怎么办 ?
解决方案
推荐阅读
- visual-studio - VSCT 菜单项未显示
- java - 如何将多个活动锁定为纵向?
- java - java firebase-admin 无法登录用户并获取令牌没有客户端
- sql - 我正在尝试在一个表中生成一个列,其中包含另一个表中的行数
- c# - 将 Mosquitto 消息插入 dataGridView
- java - 允许用户输入字符串和整数
- keras - Keras conv2D 输入形状错误。检查输入时出错:预期 conv2d_4_input 有 4 个维度,但得到了形状为 (58, 195, 1) 的数组
- javascript - 如何防止 refetchEvents() 切换到当前日/周/月?
- pdf - 从 ASP.NET WEB API 获取字节数组以使用 React/Redux 呈现为 PDF
- selenium - 如何在 selenium 中组合页面工厂设置中的 2 个 webElement