나는 내 사이트에 sockjs 토네이도 서버를 추가하기 위해 노력하고있어, 나는 (msgpack-RPC-파이썬을 사용하여) MsgPack를 통해 내 다른 응용 프로그램에 연결하기로 결정 때까지 모든 괜찮 았는데. 그리고 이제 sockjs 서버 나 RPC 서버 중 하나를 작동시킵니다. 그들 중 어느 쪽에서 시작 하느냐에 따라 먼저 루프가 반복됩니다.Sockjs 토네이도 및 RPC
나는 내가 그들 모두에 대해 하나의 tornado.ioloop를 사용할 필요가 있다고 생각합니다. 그러나 그것을 성취 할 수있는 방법을 모르십시오. 아니면 토네이도 서버에 RPC를 추가하는 또 다른 방법이 될 수있다? 어떤 제안이나 예
import tornado.ioloop
import tornado.web
import sockjs.tornado
import msgpackrpc
class RPCServer(object):
def sum(self, x, y):
return x + y
class IndexHandler(tornado.web.RequestHandler):
"""Regular HTTP handler to serve the chatroom page"""
def get(self):
self.render('index.html')
class ChatConnection(sockjs.tornado.SockJSConnection):
"""Chat connection implementation"""
# Class level variable
participants = set()
def on_open(self, info):
# Send that someone joined
self.broadcast(self.participants, "Someone joined.")
# Add client to the clients list
self.participants.add(self)
def on_message(self, message):
# Broadcast message
self.broadcast(self.participants, message)
def on_close(self):
# Remove client from the clients list and broadcast leave message
self.participants.remove(self)
self.broadcast(self.participants, "Someone left.")
if __name__ == "__main__":
# 1. Create chat router
ChatRouter = sockjs.tornado.SockJSRouter(ChatConnection, '/chat')
# 1.5 Create MsgPack RPC Server
rpc = msgpackrpc.Server(RPCServer())
# 2. Create Tornado application
app = tornado.web.Application(
[(r"/", IndexHandler)] + ChatRouter.urls
)
# 3. Make Tornado app listen on port 5000
app.listen(5000)
# 3.5 Make MsgPack RPC Server listen on port 5001
rpc.listen(msgpackrpc.Address('localhost', 5001))
# 4. Start IOLoop
tornado.ioloop.IOLoop.instance().start()
# 5. Never executed
rpc.start()
`
환영합니다 :
여기는 msgpack-RPC-파이썬과 sockjs 토네이도 샘플 코드입니다! IOLoop이 중지 될 때까지 모두 start()
통화 토네이도 IOLoop를 시작하고 그들이 종료하지 않기 때문에
을! 매력처럼 작동하십시오. 많은 감사합니다! – Jerry92