polish up
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
##
|
||||
###############################################################################
|
||||
|
||||
import sys
|
||||
import os
|
||||
import socket
|
||||
|
||||
@@ -25,10 +26,32 @@ from autobahn.twisted.websocket import WebSocketServerProtocol, \
|
||||
|
||||
|
||||
class CustomPort(tcp.Port):
|
||||
|
||||
def __init__(self, port, factory, backlog = 50, interface = '', reactor = None, reuse = False):
|
||||
tcp.Port.__init__(self, port, factory, backlog, interface, reactor)
|
||||
self._reuse = reuse
|
||||
|
||||
|
||||
def createInternetSocket(self):
|
||||
s = tcp.Port.createInternetSocket(self)
|
||||
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||
#s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
|
||||
|
||||
if self._reuse:
|
||||
##
|
||||
## reuse IP Port
|
||||
##
|
||||
if 'bsd' in sys.platform or \
|
||||
sys.platform.startswith('linux') or \
|
||||
sys.platform.startswith('darwin'):
|
||||
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
|
||||
|
||||
elif sys.platform == 'win32':
|
||||
## on Windows, REUSEADDR already implies REUSEPORT
|
||||
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||
|
||||
else:
|
||||
raise Exception("don't know how to set SO_RESUSEPORT on platform {}".format(sys.platform))
|
||||
|
||||
return s
|
||||
|
||||
|
||||
@@ -68,7 +91,7 @@ if __name__ == '__main__':
|
||||
|
||||
#reactor.listenTCP(9000, factory)
|
||||
|
||||
p = CustomPort(9000, factory)
|
||||
p = CustomPort(9000, factory, reuse = True)
|
||||
p.startListening()
|
||||
print p
|
||||
|
||||
|
Reference in New Issue
Block a user