Javascript 设置socket.io的传输属性和路径
我正在尝试通过socket.io库创建与后端的套接字连接。Javascript 设置socket.io的传输属性和路径,javascript,websocket,socket.io,Javascript,Websocket,Socket.io,我正在尝试通过socket.io库创建与后端的套接字连接。 问题是-我需要关闭长轮询选项并设置自定义路径。但我不能同时设置这两个选项,因为始终只能使用一个选项。 因此,如果我尝试这种方式,我设置的是路径,而不是传输: this.socket = io( 'wss://some-url.com', { path: '/v1/url/to/websockets' }, { transports: [ 'websocket' ] } ); 库正在尝试建立长轮询连接,该连接将被服务器拒绝(
问题是-我需要关闭长轮询选项并设置自定义路径。但我不能同时设置这两个选项,因为始终只能使用一个选项。
因此,如果我尝试这种方式,我设置的是
路径
,而不是传输
:
this.socket = io(
'wss://some-url.com',
{ path: '/v1/url/to/websockets' },
{ transports: [ 'websocket' ] }
);
库正在尝试建立长轮询连接,该连接将被服务器拒绝(我无权访问),但路径将是正确的。但如果我试图更改顺序并首先设置
传输
属性,库将省略路径
属性,前端将向发送请求wss://some-url.com/socket.io/?EIO=3&transport=websocket
url,这是不正确的。
我知道这是一些冲突,因为
transport
property更改了URL(它将自身设置为查询参数),但我不明白的是,我如何设置路径和transports属性,因为我非常需要它们。在官方文档和此处未找到解决方案。
有什么想法吗?你的语法错误,语法正确
this.socket = io(
'wss://some-url.com',
{
path :'/v1/url/to/websockets',
transports: ['websocket']
});
i、 e.两者应该在同一个对象中在这种情况下,调用this.socket.connect();不会使连接只是检查,就像我说的,编码这个。socket.connect()不做任何移动,我没有看到“握手”请求,我没有得到“onconnect”事件(当然),等等。通过上面的代码,客户端连接到您的套接字服务器。为什么在那之后还要调用这个.socket.connect()??将握手视为使用Iwebsocket传输,只有一个http请求,响应为101。在此之后,在我结束的时候,连接事件被正确调用。据我所知,我可以手动调用.connect()方法。但没关系,我在控制台上看不到“GET”套接字请求(我的意思是握手)。。。等等,看起来现在可以用了。有趣。所以上面的答案是正确的,我只需要找出区别,为什么它以前不起作用。。。