客户端app redis nodejs推送消息 ? -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

客户端app redis nodejs推送消息 ?

2016-03-09 09:47:16 2527 1

目前我的需求是这样的:
客户端app(目前只是ios app)准备通过长连接方式连接到服务器端
我已经查阅了相关的资料 ,php中可以通过 swoole workerman 感觉这2个难度有点大, 感觉对于socket底层不熟悉的难度太大, 后来看了 nodejs 感觉这个应该可以进行实现,今天看了下nodejs ,想使用他的tcp 协议那种形式,暂时不考虑web 浏览器端,代码如下:

var net = require('net');
var server = net.createServer(function(connection) { 
   console.log('client connected');
   connection.on('end', function() {
      console.log('客户端关闭连接');
   });
   connection.on('data' , function(data){
        var strData = data.toString();
        var strSign = strData.substr(0, 32);
        var strJson = strData.substr(32);
        get_redis_data();
        console.log(strSign+"---"+strJson);
   });
   
   connection.write('Hello World!\r\n');
   connection.pipe(connection);
});
server.listen(8080, function() { 
  console.log('server is listening');
});

上面的代码只是使用了 nodejs的net模块, 实现了一个客户端连接到服务器,客户端需要触发一个动作发送消息到服务器 , 然后服务器才返回信息给客户端, 那么问题来了。。
1:我现在要实现的是客户端用户登录之后,然后才进行tcp连接,客户端登录之后 ,会有一个加密的uid参数 , 我会根据这个加密的uid进行推送消息(查询当前的用户是否有新的消息)
2:目前这个消息准备采用redis来实现, 那么问题来了, redis如何保存这个消息, 看了下redis 可以使用队列 , string 之类的, 但是问题是,当给用户发了消息之后 ,如果标识这个消息已经被读了呢??? 怎么选择合适的存储消息的格式呢??

请大神们不吝赐教。。。
另外备注下我的服务器配置:
*8核的cpu
内存:8G
硬盘:固态硬盘
带宽:公网4M的
里面目前已经安装的服务是 web服务, 数据库服务是在另外的一台上面*
在备注下:
-----目前有没有现成的开放平台能实现我上面所说的。。。。。。(需要付费的也没关系),其实是一句话概括 , 客户端和服务端保持长连接, 需要进行推送消息到客户端

取消 提交回答
全部回答(1)
  • 爵霸
    2019-07-17 18:55:24

    你的问题是如何在Redis中保存消息。针对你的需求,要能有推送列表,同时还需要保存未读已读状态。
    我的方案是分开,将推送消息列表和消息列表分开,即每个用户保存一个需要推送的消息列表,以及一个该用户的历史消息列表。
    对于消息推送列表无需保存任何状态,推送过去后就从列表移除,不管用户是否读取,在推送下发的同时将该消息添加到用户的历史消息列表,这里可以保存消息的读取状态。
    历史消息列表不建议使用队列,建议分两个数据结构保存,由于消息列表显示是根据时间序,所以可以使用redis的有序列表,得分为时间戳,使用这个有序列表保存用户的消息列表(仅保存ID,方便查询分页),然后消息的具体信息,如内容、读取状态、时间、发送人等保存到一个hash结构中,key就是消息ID。

    0 0
相关问答

18

回答

【大咖问答】对话PostgreSQL 中国社区发起人之一,阿里云数据库高级专家 德哥

阿里ACE 彭飞 2019-07-10 09:36:10 1051772浏览量 回答数 18

162

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 226292浏览量 回答数 162

8

回答

OceanBase 使用动画(持续更新)

mq4096 2019-02-20 17:16:36 337145浏览量 回答数 8

111

回答

OSS存储服务-客户端工具

newegg11 2012-05-17 15:37:18 295732浏览量 回答数 111

18

回答

阿里云开放端口权限

xcxx 2016-07-20 15:03:33 646933浏览量 回答数 18

33

回答

Win Server 2003-2016 加密勒索事件必打补丁合集

妙正灰 2017-05-15 10:44:38 280467浏览量 回答数 33

38

回答

安全组详解,新手必看教程

我的中国 2017-11-30 15:23:46 259938浏览量 回答数 38

21

回答

请教一下数据量有100万条左右要什么配置?

易网网络 2013-03-27 15:18:02 192676浏览量 回答数 21

249

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 305739浏览量 回答数 249

2

回答

区域选择帮助

fanyue88888 2012-12-07 15:54:30 204451浏览量 回答数 2
+关注
2
文章
9426
问答
问答排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载