我正在开发一个需要特定信令服务器实现的WebRTC应用程序.最初我在NodeJS中开发服务器但后来我决定迁移到Python(使用Django Channels AsyncWebsocketConsumer通过Websockets与客户端通信).迁移后,我使用WebSocket基准测试工具Thor来比较两种实现,这些是获得的结果(5000个websocket连接,每个连接发送1000条消息):
Python(Django Channels)实现:
class SignallingConsumer(AsyncWebsocketConsumer):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.peer = None
self.signal = None
self.is_peer_registered = False
async def connect(self):
await self.accept()
async def disconnect(self, close_code):
pass
async def receive(self, text_data=None, bytes_data=None):
pass
Run Code Online (Sandbox Code Playgroud)
NodeJS实现:
method.start = function () {
this.webServer = this.createWebServer();
this.webServer.listen(this.config.port, function (){
console.log("Web server is listening");
});
this.socket = this.createWebSocket(this.webServer);
this.socket.on('connection', function(ws) {
var pingsCompleted = 0;
ws.on('message', function(evt) {
}.bind(this));
// Set out ping/pong mechanism
var pingInterval = setInterval(function() {
if(pingsCompleted …Run Code Online (Sandbox Code Playgroud)