Skip to content

Commit

Permalink
imporve py
Browse files Browse the repository at this point in the history
  • Loading branch information
Ethosa committed Jan 13, 2024
1 parent c374067 commit 9eba029
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 22 deletions.
1 change: 1 addition & 0 deletions .github/workflows/language_bindings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ jobs:
- name: Python Bindings 🐍
run: |
cd src
echo "Windows module"
echo "Win Module compiled with"
echo "nim c --app:lib --out:../bindings/python/happyx/happyx.pyd -d:useRealtimeGC --mm:arc --tlsEmulation:off --passL:-static --t:-flto --l:-flto --opt:speed --threads:off -d:release -d:httpx -d:export2py happyx"
echo "Linux module"
Expand Down
59 changes: 37 additions & 22 deletions src/happyx/ssr/handlers.nim
Original file line number Diff line number Diff line change
Expand Up @@ -493,29 +493,44 @@ elif exportPython:
pyFuncParams[handlerParams.getParamName("WebSocket")] = wsConnection
# Add function parameters to locals
route.locals["funcParams"] = pFuncParams
try:
wsConnection.state = wssConnect
processWebSocket(py, route.locals)
wsConnection.state = wssOpen
while wsClient.readyState == Open:
wsConnection.data = await wsClient.receiveStrPacket()
when enableHttpBeast:
try:
wsConnection.state = wssConnect
processWebSocket(py, route.locals)
except WebSocketClosedError:
wsConnection.state = wssClose
processWebSocket(py, route.locals)
except WebSocketHandshakeError:
error("Invalid WebSocket handshake. Headers haven't Sec-WebSocket-Version!")
wsConnection.state = wssHandshakeError
processWebSocket(py, route.locals)
except WebSocketProtocolMismatchError:
error(fmt"Socket tried to use an unknown protocol: {getCurrentExceptionMsg()}")
wsConnection.state = wssMismatchProtocol
processWebSocket(py, route.locals)
except WebSocketError:
error(fmt"Unexpected socket error: {getCurrentExceptionMsg()}")
wsConnection.state = wssError
processWebSocket(py, route.locals)
wsClient.close()
wsConnection.state = wssOpen
while true:
let (opcode, data) = await wsClient.readData()
if opcode == Opcode.Close:
wsConnection.state = wssClose
processWebSocket(py, route.locals)
break
wsConnection.data = data
processWebSocket(py, route.locals)
except:
error(fmt"Unexpected socket error: {getCurrentExceptionMsg()}")
wsConnection.state = wssError
processWebSocket(py, route.locals)
else:
try:
while wsClient.readyState == Open:
wsConnection.data = await wsClient.receiveStrPacket()
processWebSocket(py, route.locals)
except WebSocketClosedError:
wsConnection.state = wssClose
processWebSocket(py, route.locals)
except WebSocketHandshakeError:
error("Invalid WebSocket handshake. Headers haven't Sec-WebSocket-Version!")
wsConnection.state = wssHandshakeError
processWebSocket(py, route.locals)
except WebSocketProtocolMismatchError:
error(fmt"Socket tried to use an unknown protocol: {getCurrentExceptionMsg()}")
wsConnection.state = wssMismatchProtocol
processWebSocket(py, route.locals)
except WebSocketError:
error(fmt"Unexpected socket error: {getCurrentExceptionMsg()}")
wsConnection.state = wssError
processWebSocket(py, route.locals)
wsConnection.close()
reqResponded = true
return

Expand Down

0 comments on commit 9eba029

Please sign in to comment.