如何将属性与Redis Store中的socket.io对象相关联?

geeky_monster

我正在使用Node.js和Socket.io进行复杂的游戏,在这里我需要将socket.io对象存储在内存中,还需要为套接字对象分配属性(例如,名称,来​​自套接字的某些操作的计数器等)

在下面的代码中,我展示了一个我要实现的示例。我将所有套接字存储在一个数组中,并且还有另一个数组用于存储套接字的name属性。在任何时候,如果我收到名称的请求,都可以从内存中的数组中选择名称。

但是现在我的用户太多了,我需要在多台服务器之间平衡应用程序的负载。所以我不能在内存中存储对象和属性。我需要将它们存储在数据库中。

我打算使用Redis。此链接介绍了如何将Redis Store用于套接字-

https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO

但是,如何将其他属性(例如名称等)与Redis Store中的套接字对象相关联?如果有一些新方法可以做到这一点,请也告诉我。

 var socket_array = new Array();
var socket_name_array = new Array();

var io = require('socket.io').listen(80);

io.sockets.on('connection', function (socket) {

socket_array.push(socket);
var i = socket_array.indexOf(socket);
var name = generate_random_name();
socket_name_array[i]= name;

  socket.on('get_name', function (data) {

var i = socket_array.indexOf(socket);
var name= socket_name_array[i]
socket.emit('socket_name' , {name :name } );


  });
});

function generate_random_name(){

var random_string;
//code 
return random_string;

}
FGRibreau

是的,如果要负载平衡socket.io服务器,则必须使用redisstore之类的存储。

但是,现在您不应该使用“ socket_name_array” +事件来保持服务器上数据的一致性。

设置

var redis = require('redis'),
var pub = redis.createClient(port, host),
var sub = redis.createClient(port, host),
var client = redis.createClient(port, host);

io.configure(function(){
    io.set('store', new RedisStore({
        redisPub: pub,
        redisSub : sub,
        redisClient : client
    }));
});

用法

io.sockets.on('connection', function (socket) {
  var name = generate_random_name();
  socket.set('name', name); // store it in redis and forward this to other socket.io servers

  // On another server, if you want to retrieve this value from this socket just do:
  socket.get('name', function(err, name){
    // don't forget err. handling
    console.log(name);
  });

});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将多个socketId与一个对象的一个昵称相关联,以用于socket.io和express.js?

来自分类Dev

如何将传单标记与数据库中的对象ID相关联

来自分类Dev

如何获取与Django中的User相关联的所有相关对象?

来自分类Dev

将方法与JSON对象列表中的每个项目相关联

来自分类Dev

将 ImageField url 与 django 中的另一个对象相关联

来自分类Dev

处理html中的文本:将属性与句子相关联

来自分类Dev

Java8将流中的随机点与其他流中的播放器对象相关联

来自分类Dev

如何将集合中的文本文件与fs集合中的图像相关联?

来自分类Dev

如何将xml文本与Python中的先前空元素相关联?

来自分类Dev

Python:如何将Tkinter文本标签与信息相关联并在事件中访问它们?

来自分类Dev

如何将多个ID与MS SQL Server中的单个行相关联?

来自分类Dev

如何将第一列中的名称与重复行相关联?

来自分类Dev

如何将rgb值与透视投影中的像素位置相关联?

来自分类Dev

您如何将.exe文件扩展名与Windows中的程序相关联?

来自分类Dev

如何将密钥文件与FileZilla中的站点相关联

来自分类Dev

如何将本机应用程序与WINE中的文件类型相关联

来自分类Dev

如何将软件与ServiceNow中的服务器CI相关联?最佳实践

来自分类Dev

如何将列表与c#中的每个枚举项相关联

来自分类Dev

如何将数据与 .NET Core 中的 SignalR 连接相关联?

来自分类Dev

java Handler 对象如何与android Handler 对象相关联?

来自分类Dev

将屏幕与kivy中的GridLayout类相关联

来自分类Dev

在WPF中,什么将ListBoxItem与ListBox相关联?

来自分类Dev

将图像与ReactJS中的帖子相关联

来自分类Dev

将屏幕与kivy中的GridLayout类相关联

来自分类Dev

在WPF中,什么将ListBoxItem与ListBox相关联?

来自分类Dev

将视图与django中的html按钮相关联

来自分类Dev

将方法与Java脚本中的变量相关联

来自分类Dev

将时间阈值与kafka中的消息相关联

来自分类Dev

将文件类型与 ubuntu 18.04 中的程序相关联

Related 相关文章

  1. 1

    如何将多个socketId与一个对象的一个昵称相关联,以用于socket.io和express.js?

  2. 2

    如何将传单标记与数据库中的对象ID相关联

  3. 3

    如何获取与Django中的User相关联的所有相关对象?

  4. 4

    将方法与JSON对象列表中的每个项目相关联

  5. 5

    将 ImageField url 与 django 中的另一个对象相关联

  6. 6

    处理html中的文本:将属性与句子相关联

  7. 7

    Java8将流中的随机点与其他流中的播放器对象相关联

  8. 8

    如何将集合中的文本文件与fs集合中的图像相关联?

  9. 9

    如何将xml文本与Python中的先前空元素相关联?

  10. 10

    Python:如何将Tkinter文本标签与信息相关联并在事件中访问它们?

  11. 11

    如何将多个ID与MS SQL Server中的单个行相关联?

  12. 12

    如何将第一列中的名称与重复行相关联?

  13. 13

    如何将rgb值与透视投影中的像素位置相关联?

  14. 14

    您如何将.exe文件扩展名与Windows中的程序相关联?

  15. 15

    如何将密钥文件与FileZilla中的站点相关联

  16. 16

    如何将本机应用程序与WINE中的文件类型相关联

  17. 17

    如何将软件与ServiceNow中的服务器CI相关联?最佳实践

  18. 18

    如何将列表与c#中的每个枚举项相关联

  19. 19

    如何将数据与 .NET Core 中的 SignalR 连接相关联?

  20. 20

    java Handler 对象如何与android Handler 对象相关联?

  21. 21

    将屏幕与kivy中的GridLayout类相关联

  22. 22

    在WPF中,什么将ListBoxItem与ListBox相关联?

  23. 23

    将图像与ReactJS中的帖子相关联

  24. 24

    将屏幕与kivy中的GridLayout类相关联

  25. 25

    在WPF中,什么将ListBoxItem与ListBox相关联?

  26. 26

    将视图与django中的html按钮相关联

  27. 27

    将方法与Java脚本中的变量相关联

  28. 28

    将时间阈值与kafka中的消息相关联

  29. 29

    将文件类型与 ubuntu 18.04 中的程序相关联

热门标签

归档