【问题标题】:SignalR (ASP .Net) - "The ConnectionId is in the incorrect format" - problem with websocket using own Java Websocket ClientSignalR(ASP .Net)-“ConnectionId 的格式不正确”-使用自己的 Java Websocket 客户端的 websocket 问题
【发布时间】: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 请求请求连接令牌:

编码:https://socket-v3.bittrex.com/signalr/negotiate?clientProtocol=2.0&connectionData=[{%22name%22:%22c3%22}]&_=1600500715881

解码:https://socket-v3.bittrex.com/signalr/negotiate?clientProtocol=2.0&connectionData=[{"name":"c3"}]&_=1600500715881

步骤: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


    【解决方案1】:

    尝试对 connectionToken 和 connectionData 使用百分比编码(https://en.wikipedia.org/wiki/Percent-encoding

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-22
      • 1970-01-01
      • 1970-01-01
      • 2022-08-19
      • 2015-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多