【问题标题】:Socket.io: websocket connection failed and keep get 404 error in clientSocket.io:websocket 连接失败并在客户端保持 404 错误
【发布时间】:2019-12-03 23:32:29
【问题描述】:

我使用 socket.io 设置 websocket,但我无法成功连接。 在服务器部分,我看到了 get 调用。但在客户端,我得到了 404 GET http://localhost:6543/socket.io/?uuid=258c4ab9-b263-47ca-ab64-83fe99ea03d4&transport=polling&t=MxE5ufA net::ERR_CONNECTION_REFUSED 和连接

server - 带有快速服务器的打字稿 app.ts

const app = inversify.get<any>(EXPRESS_SYMBOL);
const cors = require('cors');
app.use(cors());

const http = require('http').createServer(app);
const io = require('socket.io')(http);

io.on('connect', (socket: any) => {
    console.log('Connected client');
    ....
});

客户端 - 角度 套接字服务

export class SocketService {

  private socket;

  public initSocket(uuid: string): void {
    this.socket =
      socketIo(ENDPOINT, {
        query: `uuid=${uuid}`
      });
  }

【问题讨论】:

  • 你的服务器环境是什么?本地电脑?托管服务器?如果是托管环境,可能需要正确配置以允许 webSocket/socket.io 连接。
  • 还有,愚蠢的问题,您是否使用http.listen(portNumber) 启动您的服务器?客户端和服务器是否都使用相同的端口?您的 Express 服务器是否适用于常规 http 请求?

标签: node.js angular typescript websocket socket.io


【解决方案1】:

你可以这样试试

export class SocketService {

  private socket;

  public initSocket(uuid: string): void {
  setTimeout (resp => {
   this.socket =
      socketIo(ENDPOINT, {
        query: `uuid=${uuid}`
      });
    }, 100);    
  }

让我知道它是否有效

【讨论】:

  • @jfriend00 套接字对象需要时间来初始化,所以在我的一个项目中我放了一个setTimeout(resp =&gt; { }),它按预期工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-13
  • 1970-01-01
  • 1970-01-01
  • 2017-07-08
  • 2019-11-05
  • 1970-01-01
相关资源
最近更新 更多