nodejs websocket分页

时间:2016-07-27 09:05:08

标签: javascript node.js websocket pagination

我有一个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);     
};

有关此的任何参考? 抱歉英文不好。

1 个答案:

答案 0 :(得分: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);

});