用SSH框架ajax和jms实现网页的点对点聊天通信。这个策略可以不?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用SSH框架ajax和jms实现网页的点对点聊天通信。这个策略可以不?相关的知识,希望对你有一定的参考价值。

如题。功能基本实现了。不过不知道这个方案可行不?只想问下:这个策略可行不。比如在速度,拥堵情况等等。还有更好的策略不?

参考技术A 可以啊,ajax就可以实现追问

具体方案?

参考技术B jms还不如直接把信息放到内存直接读呢??

jms通信,如果信息量比较大的时候,队列对不会堵? 堵的情况会出现。

点对点队列生产者-消费者:队列所有的用户共享使用吗?

性能上:A-B对话,
A对B说句话:
A->产生一条消息
->向队列插入一条消息

B-轮训请求
->从队列读取消息
->B收到消息

如果直接放到内存是不是,会更好。。追问

放内存?服务器的负荷呢?用户的访问速度呢?训导路径呢?问询方式呢?请具体说一下放内存是什么意思?也就是放内存怎么做呢。

追答

举例memcached的使用

实现一个简易的点对点rpc框架

什么是RPC?

     Remote Procedure Call, 即远程过程调用, RPC框架可以帮助我们屏蔽网络通讯细节。就使用方而言, 让远程调用和本地调用一样简单。

本地调用?远程调用?

    那么本地调用和远程调用有什么区别呢?如果是本地调用, 调用方和被调用方位于一台机器, 彼此之间可以访问同一内存, 从而实现数据的传递。而远程调用, 调用方和被调用方位于不同机器, 想要实现方法调用, 需要解决两类问题。

  • 数据传输, 我们传递的对象, 需要进行序列化转换。网络中传输的数据都是以二进制的形式存在的, 这就涉及到数据的编解码。网络是复杂的, 所以就会伴随着丢包、乱序、超时等问题,TCP协议还会存在半包和粘包问题, 这些都需要我们去解决
  • 协议, 我们应该定义规范, 从而确定数据该以什么样的协议解析, 该调用哪个方法, 方法执行结束后, 结果又是以什么形式回传?

常见的RPC框架

    RPC框架就是为了解决这类问题, 它可以将网络编程的部分和业务逻辑分开(可以分为接入层、业务层), 从而使开发人员只需专注于业务逻辑的开发即可, 常见的RPC框架如下:

技术图片

图解 | 目录

    为了对PRC框架有一个更深刻的理解, 博主编写了一个入门级的demo, 主要实现了如下功能:

  • 定义消息, 制定解析消息规则(协议)
  • 使用netty进行网络消息传输, 解决TCP的粘包和半包问题
  • 定义响应分发中心, 客户端同步请求, 服务端异步响应
  • 定义方法表, 用于提供远程调用方法
  • 定义客户端代理类, 用于实现本地调用一样的远程调用

    由于时间原因, 该项目并不成熟, 比如每次调用都会去创建一个客户端连接, 每次返回结果后断开连接, 没有考虑到请求失败的处理, 没有探活机制等等, 日后会进行优化

技术图片

    目录结构:

  • application - 方法执行列表, 定义可调用方法
  • client - netty客户端程序, 用于发送被调用方信息
  • codec - 编解码器
  • dispatcher - 响应分发中心, 用于异步转同步
  • model.message - 消息实体, 用于定义通讯消息
  • server - netty服务端, 用于提供调用服务
  • codec - 编解码器
  • handler - 处理请求方法
  • utils - 工具类
  • Test - 测试方法

git地址

SimpleRPC

最后

    感谢您的阅读, 如果有问题请即时留言, 我会在第一时间回复

技术图片

以上是关于用SSH框架ajax和jms实现网页的点对点聊天通信。这个策略可以不?的主要内容,如果未能解决你的问题,请参考以下文章

基于Tomcat + JNDI + ActiveMQ实现JMS的点对点消息传送

实现一个简易的点对点rpc框架

Kafka基础概念整理

iOS 中的点对点视频

JMS-ActiveMq-点对点模式

深入浅出JMS--ActiveMQ简单的HelloWorld实例