簡體   English   中英

在 Z23EEEB4347BDD265DDZFC6B7EE9A3B7 中的 ssl 和 https 服務器上創建 websocket

[英]Create websocket over ssl and https server in python

我已經使用WebSocketServerFactory等內置庫在 python 中實現了 webSocket 服務器,如下代碼所示:

from autobahn.asyncio.websocket import WebSocketServerProtocol, WebSocketServerFactory
import ssl

import asyncio


sslcontext = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
sslcontext.load_cert_chain(self.sslcert, self.sslkey)

factory = WebSocketServerFactory(u"{0}://127.0.0.1:{1}".format(ws, self.port))
factory.protocol = ResourceProtocol

loop = asyncio.get_event_loop()

coro = loop.create_server(factory, '', self.port, ssl=sslcontext)
self.server = loop.run_until_complete(coro)

我想知道我是否可以添加另一個帶有 event_loop 的服務器,它將運行簡單的 http 服務器來接受 GET/POST 請求?

理論上應該是可以的。

您可以使用

asyncio.gather() allows to wait on several tasks at once.

例如,使用aiohttp http 服務器運行 websocket 服務器(高速公路)

# websocket server autobahn
coro = loop.create_server(factory, '', self.port, ssl=sslcontext)

# http server using aiohttp
runner = aiohttp.web.AppRunner(app)
loop.run_until_complete(runner.setup())
site = aiohttp.web.TCPSite(runner)        

server = loop.run_until_complete(asyncio.gather(coro, site.start()))
loop.run_forever()

或者您可以使用 loop.run_until_complete() function 兩次來完成這兩個功能。

注意:我沒有測試過這段代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM