如何在基于套接字的IM中为2个用户生成唯一的通道名称?

时间:2016-03-10 23:03:34

标签: socket.io twilio discrete-mathematics

每对用户都需要一个唯一的字符串来表示他们的对话。每个用户都有一个唯一的ID,所以我目前的计划是:

  1. 按字母顺序对用户ID进行排序     例如userB, userA - > ['userA', 'userB']
  2. 然后用一些字符连接这两个名字     例如'userA::userB'
  3. 似乎有点hackish,我不完全相信这将导致独特的字符串。我无论如何都无法证明这一点。

    是否有推荐的方法?

1 个答案:

答案 0 :(得分:1)

我不认为这是黑客。 2个唯一键(用户名)的组合将形成第三个唯一键,可明确地连接两个用户。

这与数据库中的复合主键类似,后者使用来自不同实体的两个ID来唯一地键入它们之间的关系。

唯一让我烦恼的是,弄乱连接字符是否会导致冲突。我认为你的字母表可以避免这种情况,但如果你有用户" UserA:"," UserA",":UserB"和" UserB"那么你可能会与" UserA ::: UserB"发生冲突。为了避免这种情况,请确保使用不能出现在用户名中的字符进行连接。