如何从 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(未找到)