如何从 url 中删除 socket.io EIO 和其他参数

Posted

技术标签:

【中文标题】如何从 url 中删除 socket.io EIO 和其他参数【英文标题】:How to remove socket.io EIO and other parameters from url 【发布时间】:2019-08-17 21:30:23 【问题描述】:

当我使用以下选项配置 socket-io 时: url: 'ws://localhost:8888', 选项: path: '/chatws', 传输: ['websocket'], reconnectionAttempts: '3'

我收到以下错误 WebSocket 连接到“ws://localhost:8888/chatws/?EIO=3&transport=websocket”失败:WebSocket 握手期间出错:意外响应代码:501

如果我使用不添加任何参数的其他框架,那么它可以工作。

如何从 URL 中删除 EIO 和所有查询参数?

【问题讨论】:

【参考方案1】:

事实并非如此。 当您只实现基于 websocket 的传输时,您需要在两侧进行配置。默认情况下,socket.io 尝试使用长轮询建立连接。

服务器端实现:

const express = require('express')()
const server = require('http').createServer(express)
const io = require('socket.io')(server,transports:['websocket'])

客户端实现:

import io from 'socket.io-client'
const socket = io('http://localhost:8080',transports: ['websocket'])

这对我有用!

【讨论】:

这没有回答问题 - 如何从 URL 中删除 EIO 和所有查询参数?

以上是关于如何从 url 中删除 socket.io EIO 和其他参数的主要内容,如果未能解决你的问题,请参考以下文章

socket.io/?EIO=3&transport=polling&t=1345678 不充电

Phaser.js 中的 Node.js 和 Socket.io 未连接 socket.io/?EIO=3&transport=polling

继续获取和发布 /socket.io/?EIO=3&transport=polling&t=

反应客户端:websocket.js:83 WebSocket 连接到 'ws://localhost:3009/socket.io/?EIO=4&transport=websocket' 失

GET http://localhost:8080/socket.io/?EIO=3&transport=polling&t=McNiz_D 404(未找到)

Node.js + Socket IO + Apache + PHP 从 url 中删除端口?