IM设计思考:XMPP多用户文本聊天协议(MUC:Multi User Chat)

XMPP在其XEP-0045扩展中定义了一个用于多用户文本会议(群聊)的协议,类似于聊天室、QQ群等。由于它作为一个标准协议在定义模型上力求完备,涵盖了现实中的绝大部分IM产品模型,而现实中的IM产品基本都只实现了XMPP定义的模型中的一个子集。 XMPP定义的一些基本概念: 房间:房间的JID标识 (例如, ), 这里 "room" 是房间的名称而 "service" 是多用户聊天...
阅读(14578) 评论(4)

IM设计思考:基于同步HTTP双向流(BOSH)的web im机制

在XMPP扩展协议XEP-0124中定义了一个传输协议来模拟两个实体 (例如一个客户端和一个服务器) 之间的长连双向TCP连接的语义,它有效地运用多个同步的HTTP"请求/应答"对,而不需要使用频繁的轮询或者分块响应。该协议简称BOSH(Bidirectional-streams Over Synchronous HTTP),协议的设计目标之一是提供准TCP的连接性能同时兼容受约束的运行环境。...
阅读(9828) 评论(4)

NIO系列5:事件模型

前文讲述了NIO数据读写处理,那么这些数据最终如何被递交给上层业务程序进行处理的呢? NIO框架一般都采用了事件派发模型来与业务处理器交互,它与原生NIO的事件机制是模型匹配的,缺点是带来了业务处理的碎片化。需要业务程序开发者对事件的生命周期有一个清晰的了解,不像传统方式那么直观。 事件派发器(EventDispatcher)就成为了NIO框架中IO处理线程和业务处理回调接口(Handler)...
阅读(2836) 评论(0)

NIO系列4:TCP服务数据读写

注:本文适合对象需对java NIO API的使用及异步事件模型(Reactor模式)有一定程度的了解,主要讲述使用java原生NIO实现一个TCP服务的过程及细节设计。 上文讲到当客户端完成与服务端的连接建立后,为其SocketChannel封装了一个session对象代表这个连接,并交给processor处理。 processor的内部有3个重要的队列,分别存放新创建的sessio...
阅读(3063) 评论(0)

NIO系列3:TCP服务接入

注:本文适合对象需对java NIO API的使用及异步事件模型(Reactor模式)有一定程度的了解,主要讲述使用java原生NIO实现一个TCP服务的过程及细节设计。 前文讲述了NIO TCP服务绑定过程的实现机制,现在可以开始讲述服务监听启动后如何和处理接入和数据传输相关的细节设计。 在NIO的接入类中有一个Reactor线程,用于处理OP_ACCEPT事件通知,如下:...
阅读(2695) 评论(0)

NIO系列2:TCP监听绑定

注:本文适合对象需对java NIO API的使用及异步事件模型(Reactor模式)有一定程度的了解,主要讲述使用java原生NIO实现一个TCP监听绑定的过程及细节设计。 我们一开始设计了一个TCP接入服务类,这个类提供了一个API方法提供对本地一系列地址(端口)的监听绑定,类初始化后完成Selector的open操作如下: selector = Selector.open()...
阅读(2918) 评论(0)

NIO系列1:框架拆解

最近一年用NIO写了不少网络程序,也研究了一些开源NIO网络框架netty、mina等,总结了一下NIO的架构特点。 无论是netty还是mina它们都在java原生NIO的基础上进行了完善的封装,虽然细节有所不同,但总体架构思路一致,都大概划分出了以下几个组成部分: - - transport:传输层的抽象 - - protocol: 协议codec的抽象 - - event model...
阅读(5842) 评论(0)
    个人资料
    • 访问:1239766次
    • 积分:12118
    • 等级:
    • 排名:第1269名
    • 原创:176篇
    • 转载:0篇
    • 译文:9篇
    • 评论:974条
    文章分类
    最新评论