autobahn + Python 简易通信交互

================客户端=================

 

from autobahn.asyncio.websocket import WebSocketClientProtocol, \
    WebSocketClientFactory

try:
    import asyncio
except ImportError:
    import trollius as asyncio


class MyClientProtocol(WebSocketClientProtocol):

    def onConnect(self, response):
        print("请求连接服务端: {0}".format(response.peer))

    async def onOpen(self):
        print("成功服务端连接.")
        while True:
            self.sendMessage(u"Hello, world!".encode('utf8'))
            # self.sendMessage(b"\x00\x01\x03\x04", isBinary=True)
            await asyncio.sleep(1)

    def onMessage(self, payload, isBinary):
        if isBinary:
            print("接受到服务端的字节信息: {0} bytes".format(len(payload)))
        else:
            print("接受到服务端的文本信息: {0}".format(payload.decode('utf8')))

    def onClose(self, wasClean, code, reason):
        print("断开与服务端连接的原因: {0}".format(reason))


if __name__ == '__main__':

    factory = WebSocketClientFactory(u"ws://127.0.0.1:9000")
    factory.protocol = MyClientProtocol

    loop = asyncio.get_event_loop()
    coro = loop.create_connection(factory, '127.0.0.1', 9000)
    loop.run_until_complete(coro)
    loop.run_forever()
    loop.close()

 

=======================服务端========================

from autobahn.asyncio.websocket import WebSocketServerProtocol, \
    WebSocketServerFactory


class MyServerProtocol(WebSocketServerProtocol):

    def onConnect(self, request):
        print("连接到客户端: {0}".format(request.peer))

    def onOpen(self):
        print("已有客户端成功连接.")

    def onMessage(self, payload, isBinary):
        if isBinary:
            print("接收到客服端字节信息: {0} bytes".format(len(payload)))
        else:
            print("接收到客服端文本信息: {0}".format(payload.decode('utf8')))

        # echo back message verbatim
        self.sendMessage(payload, isBinary)

    def onClose(self, wasClean, code, reason):
        print("断开与客户端的连接原因: {0}".format(reason))


if __name__ == '__main__':
    import asyncio

    factory = WebSocketServerFactory(u"ws://127.0.0.1:9000")
    factory.protocol = MyServerProtocol

    loop = asyncio.get_event_loop()
    coro = loop.create_server(factory, '0.0.0.0', 9000)
    server = loop.run_until_complete(coro)

    try:
        loop.run_forever()
    except KeyboardInterrupt:
        pass
    finally:
        server.close()
        loop.close()
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值