【问题标题】:Socket.io pair roomsSocket.io 对房间
【发布时间】:2011-08-24 01:39:20
【问题描述】:

我正在使用 opentok 和 socket.io 包来尝试创建 2 个“组”。我已经能够将非分组用户与 1to1 关系配对就好了。我想做的是有两组用户。假设一组是服务台,另一组是客户。我希望将所有客户分组在一起,但不要相互连接。我也希望帮助台组也有同样的行为。然后我希望任何一对 1to1 组合在一起,即。帮助台TOcustomer。我会提供一些代码,但从逻辑的角度来看,我什至不知道如何开始编码,我唯一能提供的只是这里稍微修改的代码..http://www.tokbox.com/developersblog/code-snippets/opentok-sessions-using-node-js/

【问题讨论】:

    标签: javascript node.js socket.io


    【解决方案1】:

    您的问题究竟并不清楚您要做什么(例如,“配对”或“组合在一起”是什么意思),但您可能会发现 Socket 的一些用途.IO 的房间

    有时你想在一个房间里放一堆插座,然后[一次性]向它们发送一条消息。您可以通过在套接字上调用 join 来利用房间,然后使用标志 toin [发送数据或发出事件]:

    io.sockets.on('connection', function (socket) {
      socket.join('a room');
      socket.broadcast.to('a room').send('im here');
      io.sockets.in('some other room').emit('hi');
    });
    

    [编辑]

    好的,在看到您的评论并稍微查看了一下 OpenTok 文档(我不熟悉它,它看起来很整洁)之后,看起来您只是想要为每种类型的用户设置一个队列,对吧?这是一些代码(更像是伪代码,因为我对您的应用程序或 OpenTok API 不是很熟悉):

    var customers_waiting = [];
    var employees_waiting = [];
    
    io.sockets.on("connection", function(socket) {
      // Determining whether a connecting socket is a customer
      // or an employee will be a function of your specific application.
      // Determining this in this callback may not work depending on your needs!
      if(/* client is a customer*/) {
        customers_waiting.push(socket); // put the customer in the queue
      else if(/* client is an employee */) {
        employees_waiting.push(socket); // put the employee in the queue
      }
    
      try_to_make_pair();
    });
    
    function try_to_make_pair() {
      if(customers_waiting.length > 0 && employees_waiting.length > 0) {
        // If we have people in both queues, remove the customer and employee
        // from the front of the queues and put them in a session together.
        customer = customers_waiting.shift();
        employee = employees_waiting.shift();
    
        opentok.createSession('localhost', {}, function(session) {
          enterSession(session, customer);
          enterSession(session, employee);
        }
      }
    }
    

    【讨论】:

    • 很抱歉不够清楚。我的意思是我希望对话具有 1:1 的比例。这意味着我想将每个用户分类为客户或服务台代表,如果每个组中至少有 1 个可用,我想将它们配对在一起。如果另一组中没有可用的人与之配对,则用户坐在队列中,并在一个可用时配对。这更有意义吗?这与聊天轮盘非常相似,只是聊天轮盘将任意 2 人配对。这里将是来自不同组的任意 2 人。
    • 啊,明白了。看看 OpenTok SDK 会有所帮助。我添加了一些伪代码;这有帮助吗?
    • 是的,我认为你让我走在了正确的轨道上。我真的在寻找像你所做的那样让我前进的东西。我真的很感谢你花时间阅读和写出一些对我的帮助。我认为 opentok 将来可能会变成一项很棒的服务,许多小公司可以从他们可以让客户轻松与专业人士沟通的东西中受益。最好的部分是 WebRTC 可用时,您可以使用 HTML5 制作视频。想象一下,无需应用程序即可在任何新型智能手机上执行此操作:)
    猜你喜欢
    • 2019-05-13
    • 2019-03-02
    • 2011-12-02
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    相关资源
    最近更新 更多