I have a Java system that is running a websocket server w/ STOMP protocol.
I have a working client for Java, which uses the following code to establish the connection:
public void connectToWebSocket(String url, String userId) {
// prepare the STOMP Web Socket client
List<Transport> transports = new ArrayList<Transport>();
WebSocketContainer container = ContainerProvider.getWebSocketContainer();
container.setDefaultMaxTextMessageBufferSize(1024 * 1024 * 5); // set the buffer to 5mb
WebSocketClient wsClient = new StandardWebSocketClient(container);
transports.add(new WebSocketTransport(wsClient));
SockJsClient sockJsClient = new SockJsClient(transports);
sockJsClient.setMessageCodec(new Jackson2SockJsMessageCodec());
WebSocketStompClient stompClient = new WebSocketStompClient(sockJsClient);
stompClient.setMessageConverter(new SimpleMessageConverter());
stompClient.setMessageConverter(new MappingJackson2MessageConverter());
stompClient.setMessageConverter(new StringMessageConverter());
stompClient.setInboundMessageSizeLimit(1024 * 1024 * 5); // set inbound msg limit to 5mb
stompClient.setDefaultHeartbeat(new long[]{6000, 5000});
stompClient.setTaskScheduler(new DefaultManagedTaskScheduler()); // prepare the jwt
String jwtToken = generateJwtToken(); // compose the http header
WebSocketHttpHeaders httpHeaders = new WebSocketHttpHeaders();
httpHeaders.add("Authorization", jwtToken);
httpHeaders.add("PROFILEID", userId); // prepare the stomp header
StompHeaders stompHeaders = new StompHeaders();
stompHeaders.add("Package", packageId);
stompHeaders.add("itemList", itemList);
StompSession stompSession = stompClient.connect(url, httpHeaders, stompHeaders, new MyStompSessionHandler()).get();
}
I am trying to replicate the connection with python but I encountered some problem with the initial handshake with the following code:
def test_handshake(url, userId):
jwt = test.create_jwt()
headers = {
"Authorization": jwt,
"PROFILEID": userId
}
ws = websocket.WebSocket()
ws.connect(url, header=headers)
print(ws.recv())
ws.close()
Did I missed something? I am not too sure about the low-level request content happening in python. Thanks in advance for any help.