gpt4 book ai didi

asp.net-core - 如何从 Postman/WebSocket King 调用 SignalR Core hub 方法

转载 作者:行者123 更新时间:2023-12-04 17:17:52 25 4
gpt4 key购买 nike

我有一个 SignalR Core 集线器。我可以使用 Postman 或 WebSocket King 等客户端连接到同一个集线器。但是,我无法调用需要参数的集线器方法。可以从 SignalR JS 客户端轻松调用相同的方法。我检查了浏览器开发工具并提取了从客户端传输到服务器的消息。当我尝试使用相同的消息从 Postman/WebSocket King 调用相同的方法时,它根本不起作用。

集线器方法:

public async Task Subscribe(string[] imeis, string group)
{
...
}

从 SignalR 客户端传输的消息(从浏览器开发者工具访问):

{"arguments":[[10001001],"ALL"],"invocationId":"0","streamIds":[],"target":"Subscribe","type":1}

从 Postman/WebSocket King 发送同样的消息并没有命中集线器方法。有什么建议吗?

最佳答案

好的,就我而言,我想我已经能够连接到服务器了。所以基本上,这是一个两步过程:

<强>1。建立连接

向以下地址发出 HTTP POST 请求: /negotiate?negotiateVersion=1

响应应该是这样的:

HTTP/1.1 200 OK
Content-Length: 256
Content-Type: application/json
Server: Microsoft-IIS/10.0
Access-Control-Allow-Origin: null
Access-Control-Allow-Credentials: true
X-Powered-By: ASP.NET
Date: Tue, 17 Oct 2021 09:08:59 GMT

{"negotiateVersion":1,"connectionId":"TP-
KX7BpPj4y4rxMFwaznw","connectionToken":"OeGB-
EKkoYvcSg7Z4p4n0w","availableTransports":
[{"transport":"WebSockets","transferFormats":["Text","Binary"]},
{"transport":"LongPolling","transferFormats":["Text","Binary"]}]}

连接 token 值 (OeGB-EKkoYvcSg7Z4p4n0w) 在这里很重要!保存以供在第 2 步中使用。

<强>2。调用 SignalR hub 方法:

使用 WebSocket 协议(protocol),调用 URL: ?id=OeGB-EKkoYvcSg7Z4p4n0w

连接成功后,通过websocket向服务器传入如下数据:

{"protocol":"json","version":1}

这将导致从服务器获得空响应。在此之后,调用服务器集线器方法并按如下方式传递参数:

{"arguments":[["10001001"],"ALL"],"invocationId":"0","streamIds": 
[],"target":"Subscribe","type":1}

这里,“订阅”是我的 SignalR Core Hub 方法名称,它接受两个参数,一个字符串数组 (["10001001"]) 和一个字符串 ("ALL")。

在此之后,从服务器端,推送通知将开始通过相同的 websocket 连接到达客户端。

关于asp.net-core - 如何从 Postman/WebSocket King 调用 SignalR Core hub 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68094092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com