Search code examples
network-programmingwebsocketvpsweb3jsgo-ethereum

Connect to BSC Node running on VPS via Websocket or HTTP


I have set up my own node on BSC following the docs here - https://docs.binance.org/smart-chain/developer/fullnode.html

The problem I am having is that I am unable to connect with Web3 to the node.

When trying to connect using

web3 = Web3(Web3.WebsocketProvider('ws://[server-ip]:8545'))
print('ws - ' + str(web3.isConnected()))

my output is false

When running the node I am using:

./geth --config ./config.toml --datadir ./mainnet --ws --ws.port=8545  --ws.origins='*'

I have tried many combinations of config to get this working but with no luck. Generally, I'm trying to connect via web socket, but I'd be happy to connect with an HTTP provider instead if need be.

Looking at the netstat --listen --tcp output I get this when the node is running:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 localhost:8545          0.0.0.0:*               LISTEN
tcp        0      0 localhost:domain        0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
tcp6       0      0 [::]:30311              [::]:*                  LISTEN
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN

Does anyone know what im missing?


Solution

  • After a lot of research, I found that the best way to handle this it to simply run an Nginx proxy.

    Here are the instructions I followed for any that are looking for a solution to a similar problem

    https://www.nginx.com/blog/websocket-nginx/