如何在节点中向此对象添加数据?

时间:2015-09-09 09:51:48

标签: javascript node.js

在客户端,当您打开套接字时,它将发送此消息:

 socket.onopen = function(event) {
 var jsonstring = JSON.stringify({"type":"join", "id":myStorage.username});
  socket.send(jsonstring);
};

在服务器端,我们有一个名为clientMessages的对象,但我似乎无法判断是否有任何数据被添加到它。另外,它需要以某种方式保存服务器上的所有活动用户。

    var clientMessages = {};

socket.on("message", function (data) {
  var parsed = JSON.parse(data);
    if (parsed.type === "join") {
        var jsonstringy = JSON.stringify({ type: "history", value: clientMessages});
         socket.send(jsonstringy);

      clientMessages[parsed.id] = [parsed];      
    } else if (parsed.type === "leave") {
        delete clientMessages[parsed.id];          
    } else {       
    clientMessages[parsed.id].push(parsed);
     }
});

2 个答案:

答案 0 :(得分:0)

每次收到消息都可以var clientMessages = {};进行检查,但这种方式绝对应该没问题。我没有看到任何问题。

编辑: 好的,我看到源代码wss.on('connec...var clientMessages = {};内,这意味着每次有人连接它都会重置该变量。您应该将wss.on('..移到var clientMessages = {}; //line 20 wss.on("connection", function (socket) { //line 21 not edited

之上

基本上你会得到像这样的东西

procedure TForm1.Button1Click(Sender: TObject);
var inputValue:string;
begin
  repeat
    inputValue:=InputBox('Enter a value', 'value','');
    if (inputValue<>'') then
    begin
      if MessageDlg('Do You want to enter this value ' +inputValue+'?',mtInformation,[mbYes,mbNo],0)= mrYes then
        MessageDlg('Your Value got stored', mtInformation,[mbOk],0)
    end;
  until(inputValue='');

  repeat
    if (inputValue = '') then
      MessageDlg('Please Enter a value and try again', mtInformation,[mbOk],0) ;
    inputValue:=InputBox('Enter a value', 'value','');
    if (inputValue<>'') then
    begin
      if MessageDlg('Do You want to enter this value ' +inputValue+'?',mtInformation,[mbYes,mbNo],0)= mrYes then
        MessageDlg('Your Value got stored', mtInformation,[mbOk],0)
    end;
  until (inputValue<>'') ;
end;

答案 1 :(得分:0)

无论要监视此对象的哪个功能,请将clientMessages.length发送给他们。然后,此方法可以执行下一个必要的操作。