Sets a callback function that will be called for every new client connecting to us
function
None
set_fn_client_left()
Sets a callback function that will be called for every client disconnecting from us
function
None
set_fn_message_received()
Sets a callback function that will be called when a client sends a message
function
None
send_message()
Sends a message to a specific client. The message is a simple string.
client, message
None
send_message_to_all()
Sends a message to all connected clients. The message is a simple string.
message
None
注意事项:
当运行了 run_forever 方法后,当前线程就阻塞了。
如果在之后要调用 send_message_to_all 方法,利用多线程。
基本使用示例
from websocket_server import WebsocketServer
# Called for every client connecting (after handshake)
def new_client(client, server):
print("New client connected and was given id %d" % client['id'])
server.send_message_to_all("Hey all, a new client has joined us")
# Called for every client disconnecting
def client_left(client, server):
print("Client(%d) disconnected" % client['id'])
# Called when a client sends a message
def message_received(client, server, message):
if len(message) > 200:
message = message[:200]+'..'
print("Client(%d) said: %s" % (client['id'], message))
PORT=9001
server = WebsocketServer(PORT)
server.set_fn_new_client(new_client)
server.set_fn_client_left(client_left)
server.set_fn_message_received(message_received)
server.run_forever()
多线程示例
import time
import logging
import threading
from websocket_server import WebsocketServer
defnew_client(client, server):
server.send_message_to_all("Hey all, a new client has joined us")defmessage_received(client, server, message):iflen(message)>200:
message = message[:200]+'..'print("Client(%d) said: %s"%(client['id'], message))classServerThread(threading.Thread):def__init__(self, port=13254, host='10.1.187.36', loglevel=logging.INFO):
threading.Thread.__init__(self)
self.server = WebsocketServer(port, host=host, loglevel=loglevel)
self.server.set_fn_new_client(new_client)
self.server.set_fn_message_received(message_received)print('init server thread successfully')defrun(self):print("start running server thread")
self.server.run_forever()if __name__ =='__main__':
server_thread = ServerThread()
server_thread.start()whileTrue:
time.sleep(5)
server_thread.server.send_message_to_all('server test msg')