我们使用 WSO2 API Manager 版本 4.0.0 来公开在 .NET Core 中实现的 SignalR 服务。前端是用 Angular 构建的。
以下是我们配置 API 的方式。
WebSocket API:
WSO2 端点:wss://localhost/chathub/1.0.0/chathub 后端端点:wss://localhost:30002/chathub 主题:WebSocket API 配置为处理与聊天中心主题相关的消息。 休息 API:
WSO2 端点:https://localhost/chats/1.0.0/chathub 目的:此 REST API 提供诸如生成连接 ID 以及客户端发起和维护与 SignalR 服务的 WebSocket 连接所需的其他必要响应等功能。
我们可以在 wso2 apim 中的两个 API 中添加相同的上下文,其中一个是 REst api,另一个是 Web Socket?或者我们可以将Web Socket端口更改为https端口8243吗?是否有可能两个 api 具有相同的上下文(如 /chathub)?
我们还可以在 SignalR 中更改一件事,即如果点击 https://localhost/chats/1.0.0/chathub 首先获得所有响应,然后在 websocket 上连接 wss://localhost/chathub/1.0.0/chathub网址?如果是的话,可能的解决方案是什么。
API 管理器当前分别处理两种传输:Web 套接字和 HTTP。 Web 套接字是使用入站端点部署的,该端点使用 WS 端口 9099 和 WSS 端口 8099 公开。因此,这两种类型的 API 不能使用同一端口公开。 另外,是的。不允许在发布者门户中创建具有相同上下文的两个 API。
建议的解决方案: 在 API 网关之前进行部署将帮助您在这种情况下正确管理路由,以便如果请求中存在 Web 套接字升级标头,它将被路由到 Web 套接字 API,如果没有升级标头,它将被路由到 REST API。