我可以通过Azure API Management运行SignalR中心吗?

时间:2015-06-12 06:37:44

标签: c# azure signalr azure-api-management

我和this guy有同样的问题:我可以通过Azure API管理服务运行我的SignalR中心吗?

enter image description here

我似乎无法在服务中配置它:它只允许我转发HTTP / HTTPS流量。这与论坛帖子中的人的答案相符。 我跟着微软论坛的链接,但似乎问题没有跟进。由于答复是从2014年开始的,我想 - 也许现在可能有了。

3 个答案:

答案 0 :(得分:4)

Azure API管理当前不支持 websocket。请随时提出功能请求:http://feedback.azure.com/forums/248703-api-management/filters/new

答案 1 :(得分:2)

这取决于不支持websocket,但是如果您使用天蓝色的信号资源,则仅协商请求;这是到中心的基本帖子,必须经过APIM,其余的com(websocket请求)将直接与azure signalr资源联系在一起。

答案 2 :(得分:1)

我们知道,Azure API管理still doesn't support WebSockets

2016年12月6日:
放心,我们仍然牢记这个要求,并且会不断 审查。请保持您的反馈!

如果您使用的是Azure SignalR Service,则可以按照@lazizanie所述的方法进行操作,因为SignalR服务应仅提供协商端点:

enter image description here

假设您在ASP.NET Core 3.1中将集线器命名为 myHub

app.UseEndpoints(endpoints => endpoints.MapHub<Hub>("/myHub"));

然后使用URL=POST /myHub/negotiate查询参数在API管理negotiateVersion中进行添加操作

或使用JSON编辑器并将其添加到paths

"/myHub/negotiate": {
    "post": {
        "summary": "SignalR negotiate ",
        "operationId": "signalr-negotiate",
        "parameters": [{
            "name": "negotiateVersion",
            "in": "query",
            "schema": {
                "type": ""
            }
        }],
        "responses": {
            "200": {
                "description": null
            }
        }
    }
}

对于SignalR服务的后备集主机,例如https://myHubSignalR.westeurope.cloudapp.azure.com