精华内容
下载资源
问答
  • spy++为什么收不到QQ的鼠标消息。我在QQ窗口上按下鼠标,SPY++不显示 WM_LBUTTONDOWN,移动鼠标也不显示 WM_MOUSEMOVE。QQ是把消息传递给 DefWindowProc 了?还是钩子拦截了?拦截的是SPY+还是其他保护程序在拦截QQ...
  • 不到面,就说不上话了~ 后来有了中间件,传话人,传信人,飞鸽,电报,电话,EMAIL,MSN,QQ,微信; 为了方便系统的传输,同样中间件经历了,TIB,IBMMQ,MSMQ,JMS,AMQP/RABBITMQ/ACTIVEMQ,Kafka,ROCKETMQ; 通信的...

    为了简单高效的业务处理;以沟通工具为例,如果回到5千年前,人与人之间的沟通必须是面对面的。人与人耦合太严重了;见不到面,就说不上话了~ 后来有了中间件,传话人,传信人,飞鸽,电报,电话,EMAIL,MSN,QQ,微信; 

    为了方便系统的传输,同样中间件经历了,TIB,IBMMQ,MSMQ,JMS,AMQP/RABBITMQ/ACTIVEMQ,Kafka,ROCKETMQ;

    通信的发展,让人与人之间可以时实的远程通信(做为一个发送/生产消息的人,不需要关心,不需要知道对方何时,何地)同样(做为一个收/消费消息的人,不需要关心,对方何时发送)

    中间件因为异步通信,系统解耦的通信模式,让沟通变得简单(此处是QQ以前的广告语)

    同样通信的发展,试想如果10个人同时围在你周围跟你沟通,做为一个听众,你一定想静一静! 系统同样有这样的问题,因为大批量的请求,无法承受的并发量,导至系统瘫痪的列子笔笔皆是?

    有了通信的中间件,所有的消息都在微信上排着队;一个个听,一个个解决! 系统批量请求,使用中间件同样,所有的请求都通过了消息队列,将并发数据,转换成 队列串行化!防止系统峰值过高导致的崩溃!

    如上的过称,我们称为 流量削峰

    所以为什么要用消息中间件?

    因为他的 异步通信,系统解耦,流量削峰! 让我们代码变得更简单,业务处理变得更高效!

    展开全文
  • 微信能能实现,换一个手机,仍能拉取历史消息? 这是多点登录和消息漫游的问题。 什么是多点登录? 以微信例,可以PC端,phone端同时登录,同时收发消息。 画外音:需要注意的是,一个端只能登录一个实例,...

    阿里云幸运券

    有朋友问:

    微信如何实现手机端、PC端同时登录,同时收消息?

    微信能不能实现,换一个手机,仍能拉取到历史消息?

    这是多点登录和消息漫游的问题。

    什么是多点登录?

    以微信为例,可以PC端,phone端同时登录,同时收发消息。

    画外音:需要注意的是,一个端只能登录一个实例,例如同一个QQ号,在pc1上登录,再到pc2上登录,后者会把前者踢出,pc1会收到通知“你已在别处登录xxoo”。

    什么是消息漫游?

    在任何一个终端的任何一个实例登录,都能够拉取到所有历史聊天消息,这个就是消息漫游。

    画外音:微信目前只支持“多点登录”同时收发在线消息,以及最近几条消息的“消息漫游”,没有实现全部消息的“漫游”。

    典型即时通讯架构如何?

    典型即时通讯架构可以抽象成这么几层:

    客户端:例如pc微信,手机qq

    服务端:

    入口层gate:保持与客户端的连接;

    逻辑层logic、路由层router:实现业务逻辑,进行消息的路由;

    cache:用来存储用户的在线状态,与接入节点(用户具体连接在哪个gate节点);

    db:固化存储消息,群信息,好友关系链等信息;

    画外音:都需要考虑高可用,扩展性。

    一个典型的消息投递流程如上图步骤1-5:

    (1) 用户A登录在gate1上,发出消息;

    (2) gate1将消息给logic/router;

    (3) logic/router查询接收方的在线状态(B在线,C不在线);

    (4.1) 假设接收方C不在线,存储离线;

    (4.2) 假设接收方B在线,且登录在gate2上,消息投递给gate2;

    (5) gate2将消息投递给B;

    画外音:单对单消息有一系列应用层超时、重传、确认、去重的机制,以保证消息的可靠投递,这不是本文的重点,不进行展开。

    实现“接收方”多点登陆,架构要做什么调整?

    接收方多点登录,pc也登录,phone也登录,后一端登录不会将前一端踢出,cache中存储状态与登录点时,不再以user_id为key,改为以user_id+终端类型为key即可。

    单点登录

    B:online(状态),gate2(登录点)

    多点登陆

    B+pc:online(状态),gate2(登录点)

    B+phone:online(状态),gate3(登录点)

    当用户A给用户B发送消息时,取出所有B的登录点,进行消息群发即可(如上图中步骤4与步骤5)。

    画外音:接收方多点登录,比较容易。

    实现“发送方”多点登陆,架构要做什么调整?

    有朋友可能要问,发送方和多点登录有什么关系?

    假设:

    用户A登录了两个点,A1和A2;

    用户B登录了两个点,B1和B2;

    这样:

    A(A1发出的)发送消息给B(B1和B2);

    B(B1发出的)发送消息给A(A1和A2);

    不就可以了么?

    其实不然:

    A(A1发出的)发送消息给B(B1和B2);

    B(B1发出的)发送消息给A(A1和A2);

    但是:

    A2端虽然收到了所有B回复的消息,但消息其实是在A1端发出的,故A2端只知道聊天消息的一半(所有B的回复),缺失了聊天的上下文(所有A1端的发出)。

    画外音:这个逻辑有点绕,多看几遍。

    故,如果发送方也进行了多点登录,发送出去的任何消息,除了要投递给多点登录的接收方,还需要投递给多点登录的发送方。

    画外音:发送方发出的消息,也需要发给“发送方”。

    如上图,发送方A和接收方B都进行了多点登陆,cache中存储的信息为:

    A+pc:online(状态),gate0(登录点)

    A+phone:online(状态),gate1(登录点)

    B+pc:online(状态),gate2(登录点)

    B+phone:online(状态),gate3(登录点)

    当用户A(phone端)给用户B发送消息时,除了要投递给B的所有多点登录端,还需要投递给A多点登陆的其他端(pc端),如上图中步骤4与步骤5。

    只有这样,才能在所有用户的所有端,恢复与还原双方聊天的上下文。

    画外音:搞清楚了原理,修改并不难。

    实现“消息漫游”,架构要做什么调整?

    如果不需要支持“消息漫游”,对于在线消息,如果用户接收到,是不需要存储到数据库的。但如果要支持“换一台机器也能看到历史的聊天消息”,就需要对所有消息进行存储。

    消息投递如上图,用户A发送消息给用户B,虽然B在线,仍然要增加一个步骤2.5,在投递之前进行存储,以备B的其他端登陆时,可以拉取到历史消息。

    消息拉取如上图,原本不在线的B(phone端)重新登录了,怎么拉取历史消息呢?

    只需要在客户端本地存储一个上一次拉取到的msg_id(time),到服务端重新拉取即可。

    这里还有个问题,由于服务端存储所有消息成本是非常高的,所以一般“消息漫游”是有时间(或者消息数)限制,不能拉取所有所有几年前的历史消息,只能拉取最近的云端消息。

    画外音:

    你猜,微信有没有存储,几年前的消息呢?

    你猜,交一个超级会员费,是不是可以查询呢?

    总结

    “多点登录”是指多个端同时登录一个帐号,同时收发消息,关键点是:

    (1) 需要在服务端存储同一个用户多个端的状态与登陆点;

    (2) 发出消息时,要对发送方的多端与接收端的多端,都进行消息投递;

    “消息漫游”是指一个用户在任何端,都可以拉取到历史消息,关键点是:

    (1) 所有消息存储在云端;

    (2) 每个端本地存储last_msg_id,在登录时可以到云端同步历史消息;

    (3) 云端存储所有消息成本较高,一般会对历史消息时间(或者条数)进行限制;

    假如你来实现,你会怎么做?

    希望大家有收获。

    腾讯云代金券

    原文链接

    https://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=2651961882&idx=1&sn=173714191ce59a2f7d775955142161f9&chksm=bd2d0fc68a5a86d068c45117367f4cc0a5e961829518e0557a5017fdfdee253d33088cd215ee&scene=21#wechat_redirect

    服务推荐

    展开全文
  • C#编写支持多个QQ登录的QQ客户端

    千次阅读 2006-10-26 16:56:00
    因为前段时间比较无聊,就顺便研究了一下...这几个最基本的功能,其他的功能呢打算放下一版本在做,为什么呢?因为现在忙,没时间做,而且由于前期没有设计好框架,导致代码已经多想去维护的地步....... 先给几张图:

               因为前段时间比较无聊,就顺便研究了一下QQ 2006 Beta3 的底层协议,于是乎就顺手写了一个QQ客户端,现在只实现了登录,KeepAlive,下载在线好友,发送/接收消息.这几个最基本的功能,其他的功能呢打算放到下一版本在做,为什么呢?因为现在忙,没时间做,而且由于前期没有设计好框架,导致代码已经多到我不想去维护的地步.......

              先给几张图:

           

     登录界面,模仿的象吧,支持隐身登录和自动登录

    这两张是主界面

     

    最后简单的介绍一下目前实现和未实现:

    Project:   RedQ

    Version: 1.0.0.1 Beta

    EvenMent: Visual Studio 2005

    底层核心QQClient.Dll,界面程序RedQBuddy

    两者完全分离,通过事件进行通讯,QQClient可以作为类库提供给其他开发者使用.

    QQClient目前有几个文件:

    QQDef.cs 存放常量

    QQFunction.cs 存放常用函数

    QQCrypt.cs  加密解密模块,源代码已经公布了的,自己到我Blog里面找

    QQClient.cs  核心,包括网络层实现,事件实现,和界面通讯

    现在QQClient已经臃肿混乱的不行了,给张图就明白了

     

    Qbuddy界面制作就不说了,为了方便全是往上面丢控件,丢得我看到就想吐

    问:是否公布源代码?

    答:否!因为代码太烂自己看的都想吐,现在正在规划第二版,有可能的话会公布源代码

    问:第二版有哪些改变?

    答:首先是代码构架,至于怎么各构架法,我想了3天还没想出来,谁叫我没学过设计模式-_-#!

         代码会分的很细,现在的想法是Client里面网络层要分离出来,事件要更容易通知,解决超时检测的问题,细分[In] [Out]Packet,做成一个标准接口

         Gui端的工程可能比较大,可能所有的东西都要用GDI+来画,慢慢来,遥遥无期呵呵

         虽然这是我的无聊之做,为的是提高自己的编程水平,结果却发现有着不小的用处,不知道是Tencent有问题还是公司在搞鬼,整个公司的人都不能用正常的QQ登录-_-#,不过用自己写的客户端就可以 呵呵:)

         另外有时间再把 2006 Beta3的协议文档整理整理供大家参考:)

     

     

    展开全文
  • 这次之所以重新整理上传GitHub,是因为12年的时候曾把这个发网上,然后竟然还有很多人想要的代码,当时是上传CSDN还没有设置了积分,方便下载。虽然没什么技术含量,但感觉对新人应该还是有一点一点的地方的...
  • 为什么微信或者 QQ 等应用看似可以保证不被杀死或者杀死后可以收到消息」 如果将他们完全彻底的杀死,也是收不到的,这是肯定的 只是:他们很难被杀死,即便杀死后也会以较快的速度重启:我们(用户)...

     

    • 「为什么微信或者 QQ 等应用看似可以保证不被杀死或者杀死后可以收到消息」

    • 如果将他们完全彻底的杀死,也是收不到的,这是肯定的

    • 只是:他们很难被杀死,即便杀死后也会以较快的速度重启:我们(用户)会下意识的在手机里开启对他们的保护;他们是不少手机系统的自带软件。

    • 我们已接入「小米推送」、「华为推送」「魅族推送」「Google FCM」等市场上已有的 4 种系统推送,在 App 杀死时,你通过极光推送发的消息,在这 4 种手机上,会自动走系统推送下发消息,有需要的话可联系商务开通。

    • 联系商务,QQ 公众号:800024881,电话:400-612-5955,邮箱:sales@jpush.cn
      开通服务后方可获取到相关资料,相关技术支持请直接对接 VIP 支持,社区对此无法提供帮助

    • 当然,你也可以自己单独的去集成每个系统推送的官方 SDK ,只是这样你需要分别手动进行推送。

     

    环境:

    AndroidStudio3.2 + JPush SDK 3.0.8

    需求:

    项目要求根据不同的逻辑推送不同的内容到手机,手机状态栏显示通知(app未运行时)或弹窗提示(app正在运行),根据不同的内容点击通知或弹窗选项后跳转到相应的页面。

    现状:

    根据官方文档集成后后台推送消息到极光服务器,后台推送代码如下:

    极光推送后台代码

    根据官方文档的说明和调试发现,Android端集成好JPush SDK后,在不配置自己定义的Receiver,Android设备可以接收到服务器推送过来的Notificatio(见上面的第一张图:极光推送后台代码中的setNotification方法),并在Android设备状态栏生成一条Notification,该Notification的样式可以自定义(通过JPushInterface.setPushNotificationBuilder方法来设置),但是点击该Notification只能打开应用的主页面。

    极光说明文档

    配置好自己定义的MyReceiver:

    极光推送Android接收器代码

    Receiver配置

    此时发送推送消息时Android端会收到两条推送:

    日志

    由极光默认生成的Notification还是无法更改,不能实现点击后根据需求跳转,于是咨询了极光支持团队,得到如下答复:

    极光答复

    解决:

    根据极光的答复,初步的解决方案应该是要修改后台代码,生成PushPayload时只生成Message,不要Notification,或者推送的Notification中Message或Alert为空,这样极光SDK就不会在状态栏生成Notification,然后Android设备在Action为 cn.jpush.android.intent.MESSAGE_RECEIVED 的Receive中根据业务逻辑生成相应的Notification并设置相应的PendingIntent。

    问题:

    以上是我想到的初步解决方案,还需要和后台、iOS的同事沟通协调,上述记录一是为整理思路,二是作个记录,如果其他人遇到相似问题了可以做个参考,或者自己以后再遇到此问题时可以快速解决,后面和后台、iOS的同事沟通之后再更新。



    作者:HelloJP
    链接:https://www.jianshu.com/p/2531a9d63b7b
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

    展开全文
  • 尹成Python27天入门项目实战

    千人学习 2020-12-05 17:04:22
    标签解决提取标签名称提取QQ生成邮箱列表工具简单正则表达式编写常见的正则表达式复杂正则表达式编写复杂表达式代码验证作业与小结day18up 正则表达式实践为什么使用正则表达式正则表达式匹配.预编译的概念搜索技能...
  • 当带着微信尾巴到QQ消息她那里,她问为什么我的微信不会收QQ消息呢 那我就分享下我对于QQ 微信消息分发的一个理解 之前的QQ客户端是允许多个客户端同时登录的,后来才有的多客户端登录 那么在服务端有...
  • 如果能在启动目录(默认 %systemroot%System32)中找到该文件,将试着在 Windows 安装 CD 中找到它。如果有多引导系统的计算机,必须保证是在包含 Windows 的驱动器上使用该命令。 Diskpart  创建和删除硬盘...
  • 观察者模式

    2017-01-06 11:49:00
    在典型的网络通信处理软件里面(比如QQ),我们常常需要在接收一条消息的时候,...这代码看着总觉得有点多余,为什么要连续写三次差了多少的函数调用呢?所以观察者模式就是用来解决这个问题的,应用观察者模式...
  • 3、联系人菜单和QQ联系人管理一模一样(为了对比,我还特地又把最新版QQ下回来了),只想说对我来讲,联系人管理基本上用不到,管理云文件更常用,联系人这个菜单放在这里就是鸡肋。不知道对其他人来见有没有改进; ...
  • 二十二、为什么我接收不到群内的消息? 由于群内的消息采取组播的方式进行发送。如果您处于不同的网段,并且路由不支持组播的话,将无法收到群内的消息。 二十三、如何设置日程安排或提醒? 点击主界面上的日程...
  • 消息以加密的形式存储于网络,无论在哪里登录都可以同步本地。随时查阅历史聊天记录。 聊天记录存储于MSN空间,无安全担忧。 隐私 MSNLite多被用作为办公交流,与qq的全民娱乐不同,其私密性就显得很重要,本...
  • 飞秋2013专业版

    2014-06-24 10:54:48
    二十二、为什么我接收不到群内的消息? 由于群内的消息采取组播的方式进行发送。如果您处于不同的网段,并且路由不支持组播的话,将无法收到群内的消息。 二十三、如何设置日程安排或提醒? 点击主界面上的日程...
  • 二十二、为什么我接收不到群内的消息? 由于群内的消息采取组播的方式进行发送。如果您处于不同的网段,并且路由不支持组播的话,将无法收到群内的消息。 二十三、如何设置日程安排或提醒? 点击主界面上的日程...
  • 飞秋FeiQv2.4修正版

    2008-11-23 17:27:11
    二十二、为什么我接收不到群内的消息? 由于群内的消息采取组播的方式进行发送。如果您处于不同的网段,并且路由不支持组播的话,将无法收到群内的消息。 二十三、如何设置日程安排或提醒? 点击主界面上的日程...
  • 读码农翻身之socket

    2020-05-15 10:11:19
    1、为什么需要Socket呢? 我们知道,当存在了TCP/IP后,那么http协议应该就开发出来了,通过http协议,主机之间就可以进行通信了。但是这样存在一个问题,http是无状态协议,比如我们现在需要做一个类似QQ的实时聊天...
  • 实在知道什么原因,请教一下哪位做过的给指点一下,到底哪里的问题呢? 接口调用请求说明 http请求方式: POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/component/api_component_token POST...
  • 3、LiFi的保密性更好,光线照不到的地方自然不会泄密。 4、在LED灯泡的大力普及下,LiFi的铺设相对容易。LiFi的优点还有很多。在未来的十年到二十年会是一个巨大的商业点。 演示一下我做的一套最简单的LiFi系统Demo:...
  • 为什么 QQ、微信之类的应用退出后还能够收到通知?因为这些大厂应用,手机厂商默认都会加入自启动白名单中,也不会在应用退出后杀死它们的相关服务。 如果你多加留意,就会发现非大厂的应用如果你一段时间不用都是...
  • *号查看器v0.11

    2011-04-07 13:23:01
    问题2: 利用本程序为什么不能查看QQ密码? 如果你确实用本程序查看过QQ密码的话,那么你会发现你获取的窗口一直是主窗口(父窗口),因为QQ页面设置时利用了一项新技术,具体叫什么名字我忘记了,QQ页面中并没有...
  • 妈妈再也不用担心我找不到我想听的歌了。 支持音乐平台 网易云音乐 QQ 音乐 酷狗音乐 酷我音乐 bilibili 咪咕音乐 千千音乐 搜歌,听歌,就用 Listen1。 V2.9.0 新特性:自动切换播放源(Beta) 当一首歌的播放源不...
  • 其实现原理也很简单,ET框架提供了一个位置服务器,所有挂载MailBoxComponent的实体对象都会将自己的id跟位置注册这个位置服务器,其它服务器向这个实体对象发送消息的时候如果知道这个实体对象的位置,会先去...
  • php OA 源码 办公自动化源码

    热门讨论 2010-10-29 00:51:15
    公告:有相关权限的用户可以选择对某个人、某些人、某个部门或全体人员发送各种通告、制度、会议等消息,并可以随时查看自己已发和已的公告,可以在发送公告时设置自动回复以确认指定接收人员是否收到,即使一时没...
  • 四、为什么不能用QQ、MSN等个人通迅做为企业通迅沟通的原因。 如果把个人即时通讯带公司内部使用,就会发现存在很多问题。目前个人通讯系统存在着以下问题: 1、工作效率的降低:因员工将即时通讯软件作私人使用...
  • 网络端口查询

    2014-09-10 13:24:36
    99端口:99端口是用于一个名“Metagram Relay”(亚对策延时)的服务,该服务比较少见,一般是用不到的。 109、110端口:109端口是POP2(Post Office Protocol Version 2,邮局协议2)服务开放的,110端口是...

空空如也

空空如也

1 2 3 4
收藏数 70
精华内容 28
关键字:

qq为什么收不到消息