7

I want to connect to Socket.IO server using python. Is there a way to do it?

I have tried websocket-client as suggested in this answer.

ws = create_connection("ws://example.com:1000/socket.io/")

That code throws this exception

websocket._exceptions.WebSocketConnectionClosedException: Connection is already closed.

I feel like I am missing parameters because the JS client connection URL looks like this:

ws://example.com:1000/socket.io/?EIO=3&transport=websocket&sid=CHARSANDNUMBERS

2 Answers 2

4

You just need to use the url from the JS client, possibly without the sid:

ws = create_connection("ws://example.com:1000/socket.io/?EIO=3&transport=websocket")

From my personal experience I didn't have that sid param, but just try to add it if it doesn't work without.

Sign up to request clarification or add additional context in comments.

1 Comment

"Socket.IO is NOT a WebSocket implementation. Although Socket.IO indeed uses WebSocket for transport when possible, it adds additional metadata to each packet. That is why a WebSocket client will not be able to successfully connect to a Socket.IO server, and a Socket.IO client will not be able to connect to a plain WebSocket server either." (source)
1

You can look at this: socketIO-client

As an example,

from socketIO_client import SocketIO

socketIO = SocketIO('localhost', 8000)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.