每个客户端实施1个唯一的websocket连接?

时间:2015-10-28 16:45:50

标签: web go websocket

我有一个与服务器建立websocket连接的网页。我必须确保该站点的用户只能建立单个连接,因此打开新选项卡并导航到同一页面将关闭之前的连接。

我正在考虑维护一个以会话ID为关键字的地图;然而,随着越来越多的客户端连接,地图必须不断调整大小,我担心它会出现性能问题,并且由于它可以同时访问,因此您可能需要进行某种锁定。

有关确保每个客户端唯一连接的高效方法的任何想法?很想听听建议,谢谢。

1 个答案:

答案 0 :(得分:0)

我不会担心问题中概述的解决方案的性能。如果要关闭先前的连接,则无法维护服务器端映射。假设您使用的是单个服务器并且您正在使用Gorilla websocket包,则以下代码应该可以解决这个问题:

$(".timeline li").each(function(){
    $this = $(this);

    $this.mouseover(function(){
        $("table.services tr:eq("+($(this).index() + 1)+")").css('background','red');
    });

    $this.mouseout(function(){
        $("table.services tr:eq("+($(this).index() + 1)+")").css('background','transparent');
    });

});

与接受传入网络连接,完成websocket握手以及场景中发生的所有其他操作相比,更新此映射的成本很低。