【发布时间】:2021-01-06 06:19:08
【问题描述】:
我正在将 websocket 集成到 Bittrex - v3 API (https://bittrex.github.io/api/v3#topic-Authenticating)。 Bittrex websocket 实现基于 Microsoft ASP.net 的 SignalR - 他们没有使用 ASP.net Core 的 SignalR 实现。
我正在开发自己的 Java 客户端(基于 Vert.x),因为 SignalR 没有可用的实际 Java 客户端。
我遇到了一个问题。我想使用我自己用 Java 开发的 websocket 客户端与 Bittrex websocket 连接,但我收到 400 信息“ConnectionId 的格式不正确”。我不知道 SignalR 协议,我只是做了一些 bittrex 网站的 chrome 调试,以了解如何使用 websocket 连接。
在我的例子中,连接过程是怎样的:
第 1 步。我正在使用此 GET 请求请求连接令牌:
步骤:2. 使用如下响应嵌套:
{ “URL”: “/ signalr”, “ConnectionToken”: “+ 0kBiAOYeOtyGleCNodFQjl6TxKgBZy6o8RmI96GxteRH + GPfeycU cyODS8YiAgpvCJ4RTmuQYh3Gr6TKo7U1K / nwi1CQxuaBroX0iF6j / wKxkeU”, “的ConnectionId”: “c79d4fa4-7518-4dc3-8884-0885598b105d”, “的KeepAliveTimeout”:20.0 ,"DisconnectTimeout":30.0,"ConnectionTimeout":110.0,"TryWebSockets":true,"ProtocolVersion":"2.0","TransportConnectTimeout":5.0,"LongPollDelay":0.0}
我正在创建一个建立 WS 连接的请求:
主机:socket-v3.bittrex.com
端口:443
requestUri(编码):/signalr/connect?transport=webSockets&clientProtocol=2.0&connectionToken=0kBiAOYeOtyGleCNodFQjl6TxKgBZy6o8RmI96GxteRH+GPfeycU+cyODS8YiAgpvCJ4RTmuQYh3Gr6TKo7U1K/nwi1CQxuaBroX0iF6j/wKxkeU&connectionData%3D%5B%7B%22name%22%3A%22c3%22%7D%5D&tid= 0
requestUri(解码):/signalr/connect?transport=webSockets&clientProtocol=2.0&connectionToken=0kBiAOYeOtyGleCNodFQjl6TxKgBZy6o8RmI96GxteRH GPfeycU cyODS8YiAgpvCJ4RTmuQYh3Gr6TKo7U1K / nwi1CQxuaBroX0iF6j / wKxkeU&connectionData = [{ “名称”: “C3”}]&TID = 0 P>
(tid 在请求中始终是常量)
也许有人也有同样的问题。你知道有什么问题吗?我试图将 ConnectionId 也放入 requestUri 但它也没有帮助。
谢谢
【问题讨论】:
标签: java websocket signalr signalr.client