首页 > 解决方案 > 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 方法,但由于另一个问题螺旋式上升,这是徒劳的。

我应该怎么办 ?

标签: node.jsreactjssocketswebsocketsocket.io

解决方案


推荐阅读