Python运行套接字IO并执行另一个任务
我正在运行socketio服务器,一切正常。 有人写信给消息,我会回复消息,但我必须控制另一个长轮询页面 我无法在我的socketio服务器中实现 我的SocketIO服务器代码:Python运行套接字IO并执行另一个任务,python,socket.io,multitasking,Python,Socket.io,Multitasking,我正在运行socketio服务器,一切正常。 有人写信给消息,我会回复消息,但我必须控制另一个长轮询页面 我无法在我的socketio服务器中实现 我的SocketIO服务器代码: from socketio import socketio_manage from socketio.server import SocketIOServer from socketio.namespace import BaseNamespace from socketio.mixins import RoomsM
from socketio import socketio_manage
from socketio.server import SocketIOServer
from socketio.namespace import BaseNamespace
from socketio.mixins import RoomsMixin, BroadcastMixin
class ChatNamespace(BaseNamespace, RoomsMixin, BroadcastMixin):
def on_nickname(self, nickname):
self.request['nicknames'].append(nickname)
self.socket.session['nickname'] = nickname
self.broadcast_event('announcement', '%s has connected' % nickname)
self.broadcast_event('nicknames', self.request['nicknames'])
# Just have them join a default-named room
self.join('main_room')
def recv_disconnect(self):
# Remove nickname from the list.
nickname = self.socket.session['nickname']
self.request['nicknames'].remove(nickname)
self.broadcast_event('announcement', '%s has disconnected' % nickname)
self.broadcast_event('nicknames', self.request['nicknames'])
self.disconnect(silent=True)
def on_user_message(self, msg):
self.emit_to_room('main_room', 'msg_to_room',
self.socket.session['nickname'], msg)
print "%s : %s"%(self.socket.session['nickname'], msg)
def recv_message(self, message):
print "PING!!!", message
class Application(object):
def __init__(self):
self.buffer = []
self.request = {
'nicknames': [],
}
def __call__(self, environ, start_response):
path = environ['PATH_INFO'].strip('/')
if path.startswith("socket.io"):
socketio_manage(environ, {'': ChatNamespace}, self.request)
else:
return not_found(start_response)
def not_found(start_response):
start_response('404 Not Found', [])
return ['<h1>Not Found</h1>']
if __name__ == '__main__':
print 'Listening on port 8080 and on port 843 (flash policy server)'
SocketIOServer(('0.0.0.0', 8080), Application(),
resource="socket.io", policy_server=True,
policy_listener=('0.0.0.0', 10843)).serve_forever()
对不起,我的英语这么差。
我画了一张图表也许会有帮助
def __init__(self):
self.s_url = "http://control.site.com/getUpdates"
try:
self.last_update_id = open('last_update_id.txt', 'r').read()
except Exception, e:
self.last_update_id = 0
print self.last_update_id
self.url = "http://control.site.com/getUpdates?offset=%s"%self.last_update_id
self.getUpdates()
def getUpdates(self):
response = requests.get(self.url)
data_json = json.loads(response.content)
data_result = data_json['result']
if int(data_result[-1]["update_id"]) != int(self.last_update_id):
readResponse(data_result)
self.last_update_id = data_result[-1]["update_id"]
last_update_id_file = open('last_update_id.txt', 'wb')
last_update_id_file.write(str(self.last_update_id))
last_update_id_file.close()
self.url = "%s?offset=%s"%(self.s_url, self.last_update_id)
else:
print data_result[-1]['update_id']
time.sleep(1)
self.getUpdates()
def readResponse(self, data):
self.sendMsg('Control OK!')
#now i must send message to user via socket io server...