Всем привет! Я пишу сервер с использованием twisted. К серверу могут подключаться несколько клиентов, сервер может принимать от них сообщения и обрабатывать их. Результат должен отправлять только одному клиенту. Сразу после установления соединения клиент присылает на сервер строку вида “ima:name”, где в качестве name используется UserID. Нужно как-то идентифицировать клиент-ресивер по UserID, чтобы сервер мог знать, кому отправлять сообщения. Первое, что пришло в голову - запомнить номер клиента при подключении:
num = len(self.factory.clients)-1
print "this client is", num
Но клиенты могут подключаться и отключаться, номер клиента в self.factory.clients может меняться. Как решить проблему идентификации клиента-ресивера?
Далее привожу участок кода, отвечающий за подключение клиентов к серверу и обработку соообщения с UserID.
class IphoneChat(Protocol):
def connectionMade(self):
self.factory.clients.append(self)
print "clients are ", self.factory.clients
def dataReceived(self, data):
a = data.split(':')
command = a[0]
content = a[1]
if command == "iam":
self.name = content
msg = self.name + " has joined"
print msg