使用连接 apache paho websocket 客户端发送查询参数
Send query parametres with connection apache paho websocket client
我有一个连接到代理的 mqtt 客户端。
我的经纪人拦截连接以从中获取令牌并做一些工作。
我想在连接时发送一个令牌作为查询参数。
我的客户端是这样连接的:
MqttAsyncClient sampleClient = new MqttAsyncClient(broker, clientId, persistence);
MqttConnectOptions connOpts = new MqttConnectOptions();
connOpts.setCleanSession(false);
connOpts.setAutomaticReconnect(true);
connOpts.setKeepAliveInterval(MqttConnectOptions.KEEP_ALIVE_INTERVAL_DEFAULT);
connOpts.setConnectionTimeout(MqttConnectOptions.CONNECTION_TIMEOUT_DEFAULT);
IMqttToken token = sampleClient.connect(connOpts);
我该怎么做?有人可以帮我吗?
如果您在 class WebSocketHandshake:
中修改 sendHandshakeRequest
方法,这可能是可行的
private void sendHandshakeRequest(String key) throws IOException{
pw.print("Upgrade: websocket" + LINE_SEPARATOR);
pw.print("Connection: Upgrade" + LINE_SEPARATOR);
pw.print("Sec-WebSocket-Key: " + key + LINE_SEPARATOR);
pw.print("Sec-WebSocket-Protocol: mqttv3.1" + LINE_SEPARATOR);
pw.print("Sec-WebSocket-Version: 13" + LINE_SEPARATOR);
// TODO add the header with your token here
因为方法是 private
而 class 在 internal
包中,你别无选择,只能编译你自己的 Paho 库的自定义版本。
我有一个连接到代理的 mqtt 客户端。 我的经纪人拦截连接以从中获取令牌并做一些工作。 我想在连接时发送一个令牌作为查询参数。
我的客户端是这样连接的:
MqttAsyncClient sampleClient = new MqttAsyncClient(broker, clientId, persistence);
MqttConnectOptions connOpts = new MqttConnectOptions();
connOpts.setCleanSession(false);
connOpts.setAutomaticReconnect(true);
connOpts.setKeepAliveInterval(MqttConnectOptions.KEEP_ALIVE_INTERVAL_DEFAULT);
connOpts.setConnectionTimeout(MqttConnectOptions.CONNECTION_TIMEOUT_DEFAULT);
IMqttToken token = sampleClient.connect(connOpts);
我该怎么做?有人可以帮我吗?
如果您在 class WebSocketHandshake:
中修改sendHandshakeRequest
方法,这可能是可行的
private void sendHandshakeRequest(String key) throws IOException{
pw.print("Upgrade: websocket" + LINE_SEPARATOR);
pw.print("Connection: Upgrade" + LINE_SEPARATOR);
pw.print("Sec-WebSocket-Key: " + key + LINE_SEPARATOR);
pw.print("Sec-WebSocket-Protocol: mqttv3.1" + LINE_SEPARATOR);
pw.print("Sec-WebSocket-Version: 13" + LINE_SEPARATOR);
// TODO add the header with your token here
因为方法是 private
而 class 在 internal
包中,你别无选择,只能编译你自己的 Paho 库的自定义版本。