webscoket server and client via ssl using websockets lib

ssl cert files:

generate ssl key and cert files:

openssl req -newkey rsa:2048 -nodes -keyout miaowa.key -x509 -days 365 -out miaowa.crt

wss server:

server code:

#!/usr/bin/env python

import asyncio
import pathlib
import ssl
import websockets


async def hello(websocket, path):
    name = await websocket.recv()
    print(f"<<< {name}")

    greeting = f"Hello {name}!"

    await websocket.send(greeting)
    print(f">>> {greeting}")


ssl_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
ssl_context.check_hostname = False
ssl_context.load_cert_chain('./cert/miaowa.crt', './cert/miaowa.key')


async def main():
    async with websockets.serve(hello, "localhost", 8765, ssl=ssl_context):
        await asyncio.Future()  # run forever


asyncio.run(main())

wss client:

client code:

#!/usr/bin/env python


import asyncio
import pathlib
import ssl
import websockets


ssl_context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH, )
ssl_context.check_hostname = False
ssl_context.load_verify_locations('./cert/miaowa.crt')


async def hello():
    uri = "wss://localhost:8765"
    async with websockets.connect(uri, ssl=ssl_context) as websocket:
        name = input("What's your name? ")

        await websocket.send(name)
        print(f">>> {name}")

        greeting = await websocket.recv()
        print(f"<<< {greeting}")


asyncio.run(hello())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值