python信号器核心客户机
signalrcore的Python项目详细描述
信号器核心客户端
链接
示例
使用来自aspnet core - SignalRChat的包 未经授权的聊天示例
importloggingimportsysfromsignalrcore.hub_connection_builderimportHubConnectionBuilderdefinput_with_default(input_text,default_value):value=input(input_text.format(default_value))returndefault_valueifvalueisNoneorvalue.strip()==""elsevalueserver_url=input_with_default('Enter your server url(default: {0}): ',"ws://localhost:62342/chathub")username=input_with_default('Enter your username (default: {0}): ',"mandrewcito")hub_connection=HubConnectionBuilder()\ .with_url(server_url)\ .configure_logging(logging.DEBUG)\ .with_automatic_reconnect({"type":"raw","keep_alive_interval":10,"reconnect_interval":5,"max_attempts":5}).build()hub_connection.on_open(lambda:print("connection opened and handshake received ready to send messages"))hub_connection.on_close(lambda:print("connection closed"))hub_connection.on("ReceiveMessage",print)hub_connection.start()message=None# Do loginwhilemessage!="exit()":message=input(">> ")ifmessageisnotNoneandmessageisnot""andmessageisnot"exit()":hub_connection.send("SendMessage",[username,message])hub_connection.stop()sys.exit(0)
未经授权的聊天示例-手动重新连接
importloggingimportsysimporttimefromsignalrcore.hub_connection_builderimportHubConnectionBuilderdefinput_with_default(input_text,default_value):value=input(input_text.format(default_value))returndefault_valueifvalueisNoneorvalue.strip()==""elsevalueserver_url=input_with_default('Enter your server url(default: {0}): ',"ws://localhost:62342/chathub")username=input_with_default('Enter your username (default: {0}): ',"mandrewcito")hub_connection=HubConnectionBuilder()\ .with_url(server_url)\ .configure_logging(logging.DEBUG)\ .build()hub_connection.on_open(lambda:print("connection opened and handshake received ready to send messages"))hub_connection.on_close(lambda:reconnect)defreconnect():print("connection closed")time.sleep(20)print("try reconnect")hub_connection.start()hub_connection.on("ReceiveMessage",print)hub_connection.start()message=None# Do loginwhilemessage!="exit()":message=input(">> ")ifmessageisnotNoneandmessageisnot""andmessageisnot"exit()":hub_connection.send("SendMessage",[username,message])hub_connection.stop()sys.exit(0)
使用aspnet core - SignalRAuthenticationSample中的包,
auth的示例
importrequestsfromsignalrcore.hub_connection_builderimportHubConnectionBuilderdefinput_with_default(input_text,default_value):value=input(input_text.format(default_value))returndefault_valueifvalueisNoneorvalue.strip()==""elsevaluedefsignalr_core_example_login(url,user,username_password):response=requests.post(url,data={"email":user,"password":username_password})returnresponse.json()["token"]login_url=input_with_default('Enter your server login url({0}):',"http://localhost:50746/account/token")server_url=input_with_default('Enter your server url(default: {0}): ',"ws://localhost:50746/hubs/chat")username=input_with_default('Enter your username (default: {0}): ',"mandrewcito@mandrewcito.com")password=input_with_default('Enter your password (default: {0}): ',"Abc123.--123?")hub_connection=HubConnectionBuilder()\ .with_url(server_url,options={"access_token_factory":lambda:signalr_core_example_login(login_url,username,password)}).with_automatic_reconnect({"type":"interval","keep_alive_interval":10,"intervals":[1,3,5,6,7,87,3]})\ .build()hub_connection.on("ReceiveSystemMessage",print)hub_connection.on("ReceiveChatMessage",print)hub_connection.on("ReceiveDirectMessage",print)hub_connection.start()message=Nonewhilemessage!="exit()":message=input(">> ")ifmessageisnotNoneandmessageisnot""andmessageisnot"exit()":hub_connection.send("Send",[message])hub_connection.stop()
简化示例
使用来自aspnet core - SignalRStreaming的包,
importtimeimportsysfromsignalrcore.hub_connection_builderimportHubConnectionBuilderdefinput_with_default(input_text,default_value):value=input(input_text.format(default_value))returndefault_valueifvalueisNoneorvalue.strip()==""elsevalueserver_url=input_with_default('Enter your server url(default: {0}): ',"ws://localhost:57957/streamHub")hub_connection=HubConnectionBuilder().with_url(server_url).build()hub_connection.start()time.sleep(10)defbye(error,x):iferror:print("error {0}".format(x))else:print("complete! ")globalhub_connectionhub_connection.stop()sys.exit(0)hub_connection.stream("Counter",[10,500]).subscribe({"next":lambdax:print("next callback: ",x),"complete":lambdax:bye(False,x),"error":lambdax:bye(True,x)})