ゲームのリーダーボードデータにredisを使用したいのですが、Stackoverflowの質問の1つで、txredisがこれに適したオプションであることがわかりました。しかし、いくつかのコードを書き始めることにつながる可能性のある例を見つけることができません。誰か助けてもらえますか?例のあるウェブサイトを知っていますか?よろしくお願いします。
私はそのようなことをしようとしていますが、うまくいきません。TCPクライアントは接続しますが、「i:xxx」を送信するとすぐに切断されます。
from twisted.internet.protocol import Protocol, Factory
from twisted.internet import reactor
from twisted.internet import defer
from txredis.protocol import Redis
from twisted.internet import protocol
# Hostname and Port number of a redis server
HOST = 'localhost'
PORT = 6379
@defer.inlineCallbacks
def main():
clientCreator = protocol.ClientCreator(reactor, Redis)
redis = yield clientCreator.connectTCP(HOST, PORT)
res = yield redis.ping()
print res
info = yield redis.info()
print info
res = yield redis.set('test', 42)
print res
test = yield redis.get('test')
print test
class LeaderBoard(Protocol):
def connectionMade(self):
self.factory.clients.append(self)
clientCreator = protocol.ClientCreator(reactor, Redis)
redis = yield clientCreator.connectTCP(HOST, PORT)
def connectionLost(self, reason):
print "client removed",self
self.factory.clients.remove(self)
def dataReceived(self, data):
defer.inlineCallbacks
a = data.split(':')
if len(a) > 1:
command = a[0]
content = a[1]
res = yield self.redis.set('test', 42)
print res
msg = ""
score = ""
if command == "i":
self.name = content
msg = self.name + " has joined"
print msg
elif command== "msg":
msg = self.name + ": " + content
self.message(msg)
def message(self, message):
self.transport.write(message + '\n')
if __name__ == "__main__":
factory = Factory()
factory.protocol = LeaderBoard
factory.clients = []
reactor.listenTCP(80, factory)
print "Iphone Chat server started"
reactor.run()`