一个简单的Pyhont群发服务器代码



直接代码:


# -*- coding: utf-8 -*-

import json
import traceback

from tornado.websocket import WebSocketHandler
from tornado.web import Application
from tornado.ioloop import IOLoop

pc_front = 'sport_display'
Web_front = 'pc_name'

class ClientManager(object):
	def __init__(self):
		self.__clients = {}

	def add_client(self, name, client):
		self.__clients[name] = client

	def remove_client(self, name):
		if name in self.__clients:
			del self.__clients[name]

	def send_message_to_all_except_one(self, excepted_name, message):
		for k, v in self.__clients.items():
			if k != excepted_name:
				v.write_message(message)
				
	def send_message_to_specific_user(self, other_name, message):
		if other_name in self.__clients:
			self.__clients[other_name].write_message(message)

	def get_client_list(self):
		return self.__clients.keys()

class MainHandler(WebSocketHandler):
	__client_manager = ClientManager()

	def open(self):
		self.set_nodelay(True)
		self.__name = ''

	def on_message(self, message):
		try:
#			if len(message) <= 128:
#				data = json.loads(message)
#				if data['service'] == 'login':
#					self.__name = data['name']
#					MainHandler.__client_manager.add_client(self.__name, self)
#					resp = {}
#					resp['service'] = 'generate_existed_clients'
#					resp['clients'] = MainHandler.__client_manager.get_client_list()
#					self.write_message(json.dumps(resp))
			MainHandler.__client_manager.send_message_to_all_except_one(self.__name, message)
			data = json.loads(message)
			print(data)
		except Exception as e:
			traceback.print_exc()

	def on_close(self):
		MainHandler.__client_manager.remove_client(self.__name)
		self.close()

if __name__ == '__main__':
	Application([
		('/', MainHandler),
	]).listen(10040)

	IOLoop.instance().start()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值