我在WSO2中使用Websocket api。我需要将自定义标头传递给后端Websocket服务。我在这里找到了文档 https://docs.wso2.com/display/AM210/Adding+Mediation+Extensions
但这是针对其余api调用而不是针对Websocket。因此,如何通过WSO2将自定义标头发送到后端Websocket服务。
答案 0 :(得分:2)
您可以在初始WebSocket握手中将自定义标头发送到Web Socket后端。 您可以按照以下格式将其设置为客户端握手请求。
websocket.custom.header.<required-header-name>
例如:如果期望的标头是X-JWT-Assertion,则应发送的标头是
websocket.custom.header.X-JWT-Assertion
此功能支持是从API Manager v2.6.0添加的
您无法在此处使用中介序列,因为其余的通信都是通过ws帧完成的。
添加更多信息。
这里是一个基于netty的Web套接字客户端的示例,该客户端可用于与API Manager中部署的WS API通信。 [1]
在握手中设置授权标头,如下所示。
final WebSocketClientHandler handler = new WebSocketClientHandler(
WebSocketClientHandshakerFactory.newHandshaker(
uri, WebSocketVersion.V13, null, false, new DefaultHttpHeaders()
.add("Authorization", "Bearer e2238f3a-e43c-3f54-a05a-dd2e4bd4631f")));
此授权标头用于与API管理器进行身份验证。如果需要发送自定义标头,则可以通过如下修改上述示例来添加另一个标头。
DefaultHttpHeaders headers = new DefaultHttpHeaders();
headers.add("Authorization", "Bearer e2238f3a-e43c-3f54-a05a-dd2e4bd4631f");
headers.add("websocket.custom.header.X-WS-UserName", "bob");
final WebSocketClientHandler handler = new WebSocketClientHandler(
WebSocketClientHandshakerFactory.newHandshaker(
uri, WebSocketVersion.V13, null, false, headers));
此标头将发送为后端,
X-WS-UserName : bob