Javascript 如何从ws-client连接socket.io?

Javascript 如何从ws-client连接socket.io?,javascript,websocket,socket.io,Javascript,Websocket,Socket.io,我有一个非常简单的socket.io聊天示例,服务器端代码如下: 客户端使用套接字io代码进行连接,工作正常: 但它无法连接,出现以下错误: error: Error: socket hang up 我的urlws://localhost:3000是否错误?如何让它工作 PS:你可以在Chrome开发工具中看到这个项目并尝试它,我找到了真正的websocket url,它应该是: ws://localhost:3000/socket.io/?EIO=3&transport=webs

我有一个非常简单的socket.io聊天示例,服务器端代码如下:

客户端使用套接字io代码进行连接,工作正常:

但它无法连接,出现以下错误:

error: Error: socket hang up
我的url
ws://localhost:3000
是否错误?如何让它工作


PS:你可以在Chrome开发工具中看到这个项目并尝试它,我找到了真正的websocket url,它应该是:

ws://localhost:3000/socket.io/?EIO=3&transport=websocket

将此url与wscat配合使用效果良好

同意@freewind的回答,我想对详细描述进行更深入的讨论

ws://localhost:3000/socket.io/?EIO=3&transport=websocket
该规范可以描述为

+----------------+--------------------+
|      Elm       |        Desc        |
+----------------+--------------------+
| WS             | scheme             |
| localhost:3000 | host               |
| socket.io      | path               |
| EIO=3          | EngineIO version 3 |
| transport      | websocket          |
+----------------+--------------------+
如果传输设置为
websocket
,则在升级与websocket协议的连接时,可以使用任何websocket客户端对其进行测试

我们可以很容易地使用进行测试和调试。连接如下图所示

是的GUI客户端。 1。SocketIO

以下屏幕的配置如下所示

import io from "socket.io-client";
const socket = io( "http://localhost:3000/socket.io", 
 {
  "path": "/socketio",
  "transports": [
    "websocket"
  ]
 }
);

2。WebSocket

对于相同的套接字端点,我们可以使用WebSocket客户端对其进行测试,如下图所示

-WS-connection

-WS-feed数据

这对我很有效。您是如何发现这一点的/ws://localhost:3000不起作用有什么原因吗?如果它已部署到弹性Beanstalk上的生产环境中,我将如何做到这一点?我用我的服务器IP替换了localhost,但我没有得到任何回报,但当我使用localhost时,它可以工作@尼什奇-dhanani@NathanielBabalola真奇怪。您想加入Discord服务器吗?我们将在那里深入讨论。乍一看,这可能是CORS的问题。好的,刚刚给你发了消息@nishchit dhanani
ws://localhost:3000/socket.io/?EIO=3&transport=websocket
+----------------+--------------------+
|      Elm       |        Desc        |
+----------------+--------------------+
| WS             | scheme             |
| localhost:3000 | host               |
| socket.io      | path               |
| EIO=3          | EngineIO version 3 |
| transport      | websocket          |
+----------------+--------------------+
import io from "socket.io-client";
const socket = io( "http://localhost:3000/socket.io", 
 {
  "path": "/socketio",
  "transports": [
    "websocket"
  ]
 }
);