使用 Java 的 StreamLabs 套接字 API

问题描述 投票:0回答:3

我正在尝试使用 Java 连接到 StreamLabs 套接字 API。 API 网址是

https://sockets.streamlabs.com?token=<socketToken>

这不起作用,因为 Java 期望套接字是

ws://...
。当我将其更改为“ws”格式时,它会出现连接超时。

我错过了什么吗?这实际上不是一个 websocket,如果不是它会如何工作?

这里是他们文档的链接:https://streamlabs.readme.io/docs/socket-api

更多信息:我尝试过

org.asynchttpclient.ws.WebSocket
javax.websocket
都不起作用

java websocket twitch
3个回答
0
投票

使用SocketIo解决

<dependency>
     <groupId>io.socket</groupId>
     <artifactId>socket.io-client</artifactId>
     <version>1.0.0</version>
</dependency>

0
投票

他们的套接字文档肯定缺乏,您将连接到的实际 websocket url 是

wss://sockets.streamlabs.com/socket.io/?token=<your_socket_api_token>&transport=websocket

此外,由于没有在任何地方真正提到它,所以他们使用一个整数,添加到消息前面,作为消息类型指示符。

  • 0
    是init消息类型,包含心跳间隔和超时时间
  • 40
    是您将发送和接收的 ping 消息
  • 41
    是使用无效令牌连接后您将收到的无效令牌消息
  • 42
    将是您将收到的实际 Streamlabs 事件消息

至少这是我到目前为止通过四处探索所收集到的。


0
投票

我设法使用 java springframework 的

WebSocketConnectionManager
StandardWebSocketClient
使其工作。 我使用了另一个答案中描述的网址
'wss://sockets.streamlabs.com/socket.io/?token=<your_socket_api_token>&transport=websocket'

但是使用这种方法,您必须手动设置心跳以确保连接不会关闭。心跳是一条有效负载为“

2
”的文本消息,您会收到一条有效负载为“
3
”的消息作为答案。我通过查看 Streamlabs 文档中示例 javascript 应用程序的网络检查器获得了这些信息。

© www.soinside.com 2019 - 2024. All rights reserved.