应用 - 双向互发 + 会话属性
只要建立会话后,就可以自由的相互监听、相互发消息。这是非常重要的基础,很多场景会用到。
1、客户端
async def on_message(session: Session, message: Message):
if message.is_request():
# 答复
await session.reply_end(message, StringEntity("And you too."))
# 使用会话属性,加个计数
count = int(session.attr_or_default("count", 0))
session.attr_put("count", ++count)
if count > 5:
# 超过5次后,停止互发
return
# 也主动发一个
await session.send("/demo3", StringEntity("Hi!"))
async def main():
#::打开客户端会话
clientSession = await (SocketD.create_client("sd:ws://127.0.0.1:8602/?u=a&p=2")
.listen(EventListener().do_on_message(on_message))
.open())
# 发送并请求(且,等待答复)
await clientSession.send_and_request("/demo", StringEntity("hello wrold!"))
2、服务端
async def on_message(session:Session, message:Message):
if message.is_request() or message.is_subscribe():
#答复
session.reply_end(message, StringEntity("Server receive: " + message.entity_as_string()))
#然后,也主动发送一个
session.send("/demo2", StringEntity("Hi!"))
async def main():
#::启动服务端
await (SocketD.create_server("sd:ws")
.config(lambda c: c.port(8602))
.listen(EventListener().do_on_message(on_message))
.start())