热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Nodejs保存房间的连接套接字-Nodejssaveconnectedsocketsonrooms

Asfarasweknowcreationofsocketsisuniqueid.whenmyuserscreateroomandinviteuserstojoi

As far as we know creation of sockets is unique id.when my users create room and invite users to join into that. I cant save and store joined users on rooms.when user joined on room (s)he likes to server store this join and after disconnet and connected again joined automatically to latest joined rooms.how can i store sockets and join automatically users?

据我们所知,套接字的创建是唯一的id。当我的用户创建空间并邀请用户加入时。我不能保存和存储加入的用户在房间。当用户加入房间时,他喜欢服务器存储此加入,并在disconnet和连接后再次自动加入到最新加入的房间。我可以存储套接字并自动加入用户吗?

I cant find any solution about this ability. Because sockets changed on each connection.

我无法找到有关此能力的任何解决方案。因为每个连接上的套接字都已更改。

Is any simple solution? Thanks in advance

有简单的解决方案吗?提前致谢

1 个解决方案

#1


1  

You need to create some sort of userID for each user and, usually store that in a COOKIE. Then, if you want persistent rooms, you have to create your own server-side data structure that keeps track of which rooms you want each user to be in. And, each time you add or remove a user from a room, you can modify your own data structure so it is properly keeping track of that state.

您需要为每个用户创建某种userID,并且通常将其存储在COOKIE中。然后,如果您想要持久性房间,您必须创建自己的服务器端数据结构,以跟踪您希望每个用户所在的房间。并且,每次从房间添加或删除用户时,您都可以修改您自己的数据结构,以便正确跟踪该状态。

Then, when a user connects, you can get their userID from the COOKIE and look in your data structure to see what rooms you should put that connection in. Then, to keep memory management in check, you have to somehow expire users from your data structure after some period of inactivity so they don't stay in there forever. (probably you timestamp when they last visited and then hourly you walk through the data structure and remove users who haven't visited in awhile).

然后,当用户连接时,您可以从COOKIE获取其用户ID并查看您的数据结构以查看您应该将该连接放入哪些房间。然后,为了检查内存管理,您必须以某种方式使用户的数据到期经过一段时间不活动后的结构,所以他们不会永远留在那里。 (可能是你上次访问时的时间戳,然后每小时你遍历数据结构并删除一段时间没有访问过的用户)。

If you want this information to also survive a server restart, then you have to save it persistently to disk and then reload that information upon startup. If you're already using a database as part of your app, you can store the info in a database or, if not, you can just write your internal data structure out to disk every so often, probably as JSON and then read that in when your server starts.

如果您希望此信息在服务器重新启动后仍然存在,则必须将其永久保存到磁盘,然后在启动时重新加载该信息。如果您已经将数据库用作应用程序的一部分,则可以将信息存储在数据库中,否则,您可以将内部数据结构尽可能多地写入磁盘,可能是JSON,然后在当您的服务器启动时。


推荐阅读
  • 获取时间的函数js代码,js获取时区代码
    本文目录一览:1、js获取服务器时间(动态)2 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 本文介绍了为什么要使用多进程处理TCP服务端,多进程的好处包括可靠性高和处理大量数据时速度快。然而,多进程不能共享进程空间,因此有一些变量不能共享。文章还提供了使用多进程实现TCP服务端的代码,并对代码进行了详细注释。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • 如何优化Webpack打包后的代码分割
    本文介绍了如何通过优化Webpack的代码分割来减小打包后的文件大小。主要包括拆分业务逻辑代码和引入第三方包的代码、配置Webpack插件、异步代码的处理、代码分割重命名、配置vendors和cacheGroups等方面的内容。通过合理配置和优化,可以有效减小打包后的文件大小,提高应用的加载速度。 ... [详细]
  • 从批量eml文件中提取附件的Python代码实现方法
    本文介绍了使用Python代码从批量eml文件中提取附件的实现方法,包括获取eml附件信息、递归文件夹下所有文件、创建目的文件夹等步骤。通过该方法可以方便地提取eml文件中的附件,并保存到指定的文件夹中。 ... [详细]
  • 第七课主要内容:多进程多线程FIFO,LIFO,优先队列线程局部变量进程与线程的选择线程池异步IO概念及twisted案例股票数据抓取 ... [详细]
  • 很多时候在注册一些比较重要的帐号,或者使用一些比较重要的接口的时候,需要使用到随机字符串,为了方便,我们设计这个脚本需要注意 ... [详细]
  • 起因由于我录制过一个小程序的课程,里面有消息模板的讲解。最近有几位同学反馈官方要取消消息模板,使用订阅消息。为了方便大家容易学 PythonFlask构建微信小程序订餐系统 课程。 ... [详细]
author-avatar
itsima
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有