#删除连接,从集合中删除连接对象item
def deleteconnection(item):
global connectionlist
del connectionlist['connection'+item]
#WebSocket服务器对象()
class WebSocketServer(object):
def __init__(self):
self.socket = None
self.i = 0
#开启操作
def begin(self):
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ip = '10.1.80.83'
port = 8080
self.socket.bind((ip,port))
self.socket.listen(50)
#全局连接集合
global connectionlist
while True:
#服务器响应请求,返回连接客户的信息(连接fd,客户地址)
connection, address = self.socket.accept()
#根据连接的客户信息,创建WebSocket对象(本质为一个线程)
#sockfd,index,用户名,地址
newSocket = WebSocket(connection,self.i,address[0],address)
#线程启动
newSocket.start()
#更新连接的集合(hash表的对应关系)-name->sockfd
connectionlist['connection'+str(self.i)]=connection
self.i += 1
if __name__ == "__main__":
server = WebSocketServer()
server.begin()
说明
在实例化一个WebSocketServer对象后,调用对象的begin方法,将启用WebSocket服务端程序,一旦接受到客户端的访问请求,则通过实例化一个WebSocket对象,并调用对象的start方法来处理客户端请求,并同时将客户端的socket connection信息保存在字典中供后续使用,后面一个篇幅会详细介绍WebSocket类。