You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have a particular usecase where I am trying to send data from my JS front end to my Python backend via websockets, exposed through ngrok.
Python Server:
asyncdefhandler(websocket):
whileTrue:
message=awaitwebsocket.recv()
print(message)
asyncdefmain():
# Start WebSocket serverasyncwithwebsockets.serve(handler, args.host, args.port):
awaitasyncio.Future() # run foreverif__name__=="__main__":
ngrok_tunnel=ngrok.forward(args.port, "tcp", authtoken_from_env=True)
print(f"Ngrok tunnel established at {ngrok_tunnel.url()}")
asyncio.run(main())
JS Front End:
import{useState,useRef,useEffect}from"react";constTest=()=>{const[text,setText]=useState("");const[isCreateEvent,setIsCreateEvent]=useState(false);const[socket,setSocket]=useState(null);useEffect(()=>{constnewSocket=newWebSocket("ws://5.tcp.eu.ngrok.io:12075");setSocket(newSocket);},[]);useEffect(()=>{if(socket&&socket.readyState===WebSocket.OPEN){socket.on("message",(event)=>{// Update the text state based on the message receivedconsole.log({ event });constdata=JSON.parse(event.data);setText((prev)=>`${prev}\n${data.data}`);});}},[socket]);conststartCreateEvent=()=>{constevent={data: "1"};socket.send(JSON.stringify(event));};conststopCreateEvent=async()=>{awaitsocket.close();setSocket(null);};return(<div><h1>Test Socket</h1><textareavalue={text}readOnly/><buttononClick={startCreateEvent}disabled={isCreateEvent}>
Start
</button><buttononClick={stopCreateEvent}disabled={!isCreateEvent}>
Stop
</button></div>);};exportdefaultTest;
Error, on connection:
Traceback (most recent call last):
File "/Users/miniconda3/envs/venv/lib/python3.10/site-packages/websockets/legacy/server.py", line 236, in handler
await self.ws_handler(self)
File "/Users/Desktop/server.py", line 126, in handler
message = await websocket.recv()
File "/Users/miniconda3/envs/venv/lib/python3.10/site-packages/websockets/legacy/protocol.py", line 568, in recv
await self.ensure_open()
File "/Users//miniconda3/envs/venv/lib/python3.10/site-packages/websockets/legacy/protocol.py", line 948, in ensure_open
raise self.connection_closed_exc()
websockets.exceptions.ConnectionClosedError: sent 1011 (internal error) keepalive ping timeout; no close frame received
Note that this doesn't occur when I don't use NGROK, leading me to believe there is some error in the way the port is being forwarded.
I've tried the same with tcp and http.
The text was updated successfully, but these errors were encountered:
@RohitMidha23 just following up here. We are currently redesigning this library and will look to address your issue as part of the redesign. Thanks for your patience.
I have a particular usecase where I am trying to send data from my JS front end to my Python backend via websockets, exposed through ngrok.
Python Server:
JS Front End:
Error, on connection:
Note that this doesn't occur when I don't use NGROK, leading me to believe there is some error in the way the port is being forwarded.
I've tried the same with
tcp
andhttp
.The text was updated successfully, but these errors were encountered: