2016-03-10 8 views
0

Каждой паре пользователей требуется уникальная строка для представления их разговора. Каждый пользователь имеет уникальный идентификатор, так что мой текущий план заключается в следующем:Как создать уникальное имя канала для 2 пользователей в IM на основе сокетов?

  1. Сортировать пользовательские идентификаторы в алфавитном порядке например userB, userA ->['userA', 'userB']
  2. Затем соединить два названия с некоторым характером например 'userA::userB'

Кажется немного хакерским, и я не совсем уверен, что это приведет к уникальным строкам. Кажется, я не могу найти доказательства.

Есть ли рекомендуемый подход?

ответ

1

Я не думаю, что это хак. Сочетание двух уникальных ключей, имен пользователей, станет третьим уникальным ключом, который однозначно соединяет двух пользователей.

Это аналог сложного первичного ключа в базе данных, в котором используются два идентификатора из разных объектов, чтобы однозначно определить взаимосвязь между ними.

Единственное, что меня беспокоит, это то, может ли возиться с конкатенирующим персонажем столкновение. Я думаю, что это избегается вашим алфавитом, но если у вас есть пользователи «UserA:», «UserA», «: UserB» и «UserB», вы можете столкнуться с «UserA ::: UserB». Чтобы избежать этого, убедитесь, что вы конкатенации используете символ, который не может отображаться в именах пользователей.