我没有使用JavaScript的经验,但是我必须编写一个简单的服务器应用程序。我需要通过以下方式描述连接的客户端:
1. name
2. socket
3. connectedSocket
通过的方式:
1. just having information about socket, i can get its associated name and connectedSocket
2. just having a name i can get its socket.
我想避免使用“查找”功能通过搜索指定的名称或其他套接字来获取某个客户端,因为它是服务器应用程序。我考虑过使用关联数组,因为我可以通过提供键来获取价值,但是我在javascript中听说这只是一个对象,而
delete myArray["key"];
不会减小数组大小。因此,总而言之,我需要以一种可以避免使用“查找”功能并且能够以安全的方式删除和添加许多连接的方式来表示该数据。
答案 0 :(得分:1)
Jacascript对象基本上是 关联数组。因此,很可能它们是您的正确工具。
对于您认为delete
不会做的事情,我还不太清楚。如果您想知道一个对象中有多少个键,可以使用Object.keys找出来,从对象中delete
进行操作将减少该值。例如:
const myObject = {
a: 'hello',
b: 'world',
}
console.log('a before', myObject.a); // can also access it with myObject["a"] if needed
console.log('length before', Object.keys(myObject).length);
delete myObject.a
console.log('a after', myObject.a);
console.log('length after', Object.keys(myObject).length);
如果您担心删除不会释放内存,那么只要没有其他有关已删除内容的引用,它就会释放内存。
答案 1 :(得分:0)
如果我正确理解了您的问题,我会执行以下操作: 为每个套接字连接获取唯一的ID,然后可以创建如下对象:
const socketStore = {
[socketId]: {
...
},
[socketId]: {
...
}
}
然后,为了检索数据,您可以使用socketStore[socketId]
,而为了删除数据,您可以使用delete socketStore[socketId]