在客户端,当您打开套接字时,它将发送此消息:
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);
}
});
答案 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
发送给他们。然后,此方法可以执行下一个必要的操作。