我想在Vue项目中与Websocket建立WebSocket连接。但我每次都得到这个错误
WebSocket connection to 'wss://localhost:3000/' failed:
我为此使用的代码:
onMounted(() => {
const socket = new WebSocket('wss://localhost:3000/');
还尝试了ws://和不同的浏览器(因为SO上的一些人说这是一个已知的Chrome问题)。
但是当我使用socket.io来达到同样的目的时,一切都很正常
onMounted(() => {
const socketio = io('localhost:3000');
在服务器端,我使用socket.io。我也试过了:
const WebSocket = require("ws");
const wsServer = new WebSocket.Server({ port: 4000 });
wsServer.on("connection", (client) => {
console.log("connected!!!");
client.send("hello!");
});
然后尝试使用端口4000连接:
onMounted(() => {
const socket = new WebSocket(`wss://localhost:4000/`);
还是连接不上...
我有一个限制,不能使用socket.io,而是使用内置的WebSocket。所以我想知道在这种情况下WebSocket和socket.io连接之间的区别是什么?如何使WebSocket代码工作?
P.S.添加Vue标签是因为也许我应该编辑我的项目的配置?
1条答案
按热度按时间gev0vcfq1#
您没有说明您使用的是什么类型的服务器,但由于与socket.io客户端连接可以正常工作,我猜您的服务器可能使用socket.io。
正如socket.io文档所述:
Socket.IO不是WebSocket实现。
然后呢
WebSocket客户端将无法成功连接到Socket.IO服务器
Socket.io 是一个具有服务器和客户端实现的库,它使用WebSockets,但具有许多使实现真实的连接更容易的功能。
所以看起来你必须使用socket.io客户端(尽管我知道这对你来说是个问题),或者将服务器实现改为纯WebSocket实现。