def main(): reactor.listenTCP(8000, EchoApp()) num = cpu_count() if prefork(num): exit() reactor.run()
from gevent import fork from prefork import prefork, cpu_count def connection(env, start): ws = env["wsgi.websocket"] send, rcv = ws.send, ws.receive while True: send(rcv()) if __name__ == "__main__": addr = "0.0.0.0", 8000 server = WSGIServer(addr, connection, handler_class=WebSocketHandler, log=None) # bind socket if hasattr(server, "pre_start"): server.pre_start() else: server.init_socket() num = cpu_count() print "Gevent + gevent-websocket (%s workers)" % (num + 1) prefork(num, fork=fork) # gevent needs special fork try: server.serve_forever() except KeyboardInterrupt: server.stop()
from tornado.web import Application from tornado.websocket import WebSocketHandler from tornado.httpserver import HTTPServer from tornado.netutil import bind_sockets from logging import getLogger, CRITICAL from prefork import prefork, cpu_count class EchoApp( Application ): def __init__(self): Application.__init__( self, [("/", WSHandler)] ) class WSHandler( WebSocketHandler ): def allow_draft76( self ): return False def on_message( self, message ): self.write_message( message, binary=True ) if __name__ == "__main__": getLogger().setLevel( CRITICAL ) server = HTTPServer( EchoApp() ) sockets = bind_sockets( 8000, backlog=768 ) num = cpu_count() print "Tornado (%s workers)" % num if prefork( num ): exit() server.add_sockets( sockets ) IOLoop.instance().start()
from gevent.pywsgi import WSGIServer from geventwebsocket.handler import WebSocketHandler from gevent import fork from prefork import prefork, cpu_count def connection( env, start ): ws = env["wsgi.websocket"] send, rcv = ws.send, ws.receive try: while True: send( rcv() ) except: pass if __name__ == "__main__": addr = "0.0.0.0", 8000 server = WSGIServer(addr, connection, handler_class=WebSocketHandler, backlog=768, log=None) if hasattr( server, 'pre_start' ): server.pre_start() else: server.init_socket() num = cpu_count() print "Gevent + gevent-websocket (%s workers)" % num if prefork( num, fork=fork ): exit() # gevent needs a special fork server.serve_forever()
from twisted.internet.reactor import listenTCP, run from twisted.internet.protocol import Protocol, Factory from txws import WebSocketFactory from prefork import prefork, cpu_count class Echo( Protocol ): def dataReceived( self, data ): self.transport.write( data ) class EchoFactory( Factory ): def buildProtocol( self, addr ): return Echo() if __name__ == "__main__": listenTCP(8000, WebSocketFactory( EchoFactory() )) num = cpu_count() print "Twisted + txWS (%s workers)" % (num+1) prefork( num ) run()