Comments (6)
Not quite sure what I did but will put it here if it helps anything...
Was looking at different way to do threading in python and ran across this threading link.
I went into the websocket_server.py file and modified
def run_forever(self):
try:
logger.info("Listening on port %d for clients.." % self.port)
self.serve_forever()
to this
def run_forever(self):
try:
logger.info("Listening on port %d for clients.." % self.port)
# self.serve_forever()
_serve = self.serve_forever
# Start a thread with the server -- that thread will then start one
# more thread for each request
server_thread = threading.Thread(target=_serve)
# Exit the server thread when the main thread terminates
server_thread.daemon = True
server_thread.start()
Not sure why or how...but now my app appears to start the socket server...continue along peacefully and connect to my browser client. Best accidental discovery I have made today lol
Is this something that could be useful for others?
from python-websocket-server.
You don't have to do that. You should be able to run server_forever
as a separate thread, similarly to how you did it.
I think the issue you first experienced was that you were passing threading.Thread(target=server.run_forever())
instead of (the correct) threading.Thread(target=server.run_forever)
. Notice that in the latter you are passing the function while in the first you are actually running the function.
from python-websocket-server.
It appears that the Ctrl+C
trick only works once the client already connects to the socket server
So this works
- start socket server
- connect browser client
Ctrl+C
python code- execute remaining while loop
This does NOT work
- start socket server
Ctrl + C
- connect browser client (fails)
- remaining loop runs
from python-websocket-server.
@afreeland Dude you literally probably saved me hours with this thanks so much. Maybe you make pull request for it?
from python-websocket-server.
@murphy214 Glad I could help =)
from python-websocket-server.
Original solution may have been overthinking it, but I had been trying something very similar with multiprocessing and running into pickle/cross-process issues with the server object. Didn't think to try threading instead until I saw this conversation. Kudos to @afreeland for the inadvertent solution.
And lest it be misinterpreted, many thanks to @Pithikos for the fantastic Pythonic WebSockets solution. Minimal dependencies, beautifully clean API, robust use-case support. Invaluable.
from python-websocket-server.
Related Issues (20)
- Close connections for a specific client HOT 1
- How to multicast message ?
- [feature]Hot reload like flask or django?
- Handling of very long strings
- Getting an exeption when shutting down in threaded mode HOT 2
- from websocket_server.thread import WebsocketServerThread
- support IPV6 connection ? HOT 1
- send_message_to_all sporadicaly causes exception HOT 1
- Does this server support Sec-WebSocket-Protocol (sub-protocols) ?
- "ConnectionAbortedError: [WinError 10053]" when closing/reloding page
- "BrokenPipeError: [Errno 32] Broken pipe" when reloading client webpage HOT 3
- Reset Client List.
- Abnormal port connection requests will cause the websocket-server to report an error
- Connection closing callback fails to be called
- _terminate_client_handlers does not close all clients
- how can i get the client cookie HOT 1
- Finishing of handle() after disconnect_clients_abruptly() leads to executing _client_left_ with None
- Socket is not closed after client left HOT 1
- TypeError: str, bytes or bytearray expected, not int HOT 3
- WARNING:websocket_server.websocket_server:SSL not available HOT 8
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from python-websocket-server.