【问题标题】:nodejs websocket paginationnodejs websocket分页
【发布时间】:2016-11-17 07:12:02
【问题描述】:

我有一个带有 javascript 的接口,它请求使用 nodejs 连接到 websocket。 websocket 经常将它产生的实时数据发送到接口。

为界面制作分页的最佳方式或最佳实践是什么。

它不像我会附加服务器推送到接口的所有数据,数据是通过websocket一一发送的,所以它有点像日志记录。

这是一些代码示例

connection.onmessage = function (message) {
  console.log(message.data);
  //var json = JSON.parse(message.data.text);
  content.prepend('<p><span style="color:red"></span> @ '+ message.data + '</p>');
  console.log(message.data.text);     
};

对此有任何参考吗? 抱歉英语不好。

【问题讨论】:

    标签: javascript node.js websocket pagination


    【解决方案1】:

    除了请求的分页信息之外,此示例还有更多内容。

    • 客户端,我们正在设置listRequest_Message,并将消息传递给服务器的套接字事件。 SessionID 仅用于知道要响应哪个用户。 UseIndexStart 是当前最小记录,UseIndexEnd 是当前最大记录。

      listRequest_Message = [[SessionID], [UseIndexStart], [UseIndexEnd]]
      
    • 示例每页返回 21 条记录

      //Page Back
      var UseIndexStart = StartIndex - 21
      var UseIndexEnd = UseIndexStart + 22
      
      //Page Forward
      var UseIndexStart = parseInt(StartIndex) + 21;
      var UseIndexEnd = UseIndexStart + 22;
      

    服务器应用程序

    • 更改响应以响应索引之间的记录。
    • 客户端调用的套接字事件是动态的,但我在下面包含了一个名为listRequest_news 的分页事件
    • 被解析的 JSON 对象是一个包含电影、电视节目和一般媒体列表的文本文件。

    代码:

    socket.on('listRequest_news', function(msg, body){
    for(var i = 0; i < mediaObj.length; i++){
      var thisobj = mediaObj[i];
    
      var JSONmsg = JSON.parse(msg[0]);
      var ClientIndex = clientkeyIndex.indexOf(JSONmsg);
    
      var startindex = msg[1];
      var endindex = msg[2];
    
      if (i > startindex && i < endindex)
        {
          clientID = parseInt(ClientIndex);
          client[clientID].emit('list_RequestGenericMedia', thisobj);
        }
    
      clientID = parseInt(ClientIndex);
      client[clientID].emit('list_RequestGenericMedia', thisobj);
    
    }
    });
    

    客户端

    • 存储所选记录的StartIndexEndIndex
    • 将这些值附加到上一个和下一个按钮

    代码:

    $("#listviewcontrolller_prev").on("click", "", function(event){
    
    var selectedOption = localStorage.getItem('selectedOption')
    
    var StartIndex = $("#prevpage").text();
    var EndIndex = $("#nextpage").text();
    
    var UseIndexStart = StartIndex - 21
    var UseIndexEnd = UseIndexStart + 22
    
    $("#prevpage").text(UseIndexStart);
    $("#nextpage").text(UseIndexEnd);
    
    var SessionID = localStorage.getItem('SocketID')
    var listRequest_Message = [[SessionID], [UseIndexStart], [UseIndexEnd]];
    
    $("#newsOutPut").empty();
    socket.emit(selectedOption, listRequest_Message);
    });
    
    $("#listviewcontrolller_next").on("click", "", function(event){
    
    var selectedOption = localStorage.getItem('selectedOption');
    
    var StartIndex = $("#prevpage").text();
    var EndIndex = $("#nextpage").text();
    
    var UseIndexStart = parseInt(StartIndex) + 21;
    var UseIndexEnd = UseIndexStart + 22;
    
    $("#prevpage").text(UseIndexStart);
    $("#nextpage").text(UseIndexEnd);
    
    var SessionID = localStorage.getItem('SocketID')
    var listRequest_Message = [[SessionID], [UseIndexStart], [UseIndexEnd]];
    
    $("#newsOutPut").empty();
    socket.emit(selectedOption, listRequest_Message);
    
    });
    

    【讨论】:

    • 好的,我已经完成了实现。
    猜你喜欢
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-03
    • 2015-09-23
    • 2017-07-12
    • 1970-01-01
    相关资源
    最近更新 更多