博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oschat IM 开源即时通讯项目介绍 - FengJ的个人页面 - 开源中国社区
阅读量:7079 次
发布时间:2019-06-28

本文共 2107 字,大约阅读时间需要 7 分钟。

    Oschat IM 开源即时通讯项目介绍
    255人收藏此文章, 我要收藏 发表于5天前(2013-08-28 11:36) , 已有6412次阅读 ,共85个评论
    目录:[ - ]
    Oschat IM
    一、Oschat Server
    1、为什么选择Akka
    2、Oschat中的Akka
    二、Oschat Client
    三、开源
    Oschat IM
        Oschat IM是一个开源的即时通信项目,包括基于websocket的服务器端和基于node-webkit的客户端。为什么我要做这个项目,一是先有的开源即时通讯项目很少,多数企业是选择Openfire+Spark进行二次开发,或者采购腾讯通这样的产品进行业务的集成。二是这样的开源项目的客户端基本是采用Swing或者c++编写,相对于node-webkit采用html5+js进行开发的,重写修改起来对开发人员的要求要高得多,精通web开发的人员数量也多的多。用html5写出来的界面也更加美观方便。这就是我做这个的初衷。
    一、Oschat Server
        Oschat IM的服务器端架构主要基于Akka+Servlet。客户端与服务器端的通信数据格式用的是json,这里并没有打算去实现XMPP规范,因为我们不需要与其他IM进行通信。我也懒得去研究XMPP了。Servlet作为与客户端通信的接口,当websocket接受到消息便交给Akka系统处理,Akka会找到接受消息人的MessageInbound实例,然后把消息发送给接受人的客户端。
    1、为什么选择Akka
        Akka 是一个用 Scala 编写的库,用于简化编写容错的、高可伸缩性的 Java 和 Scala 的 Actor 模型应用。它已经成功运用在电信行业。系统几乎不会宕机(高可用性 99.9999999 % 一年只有 31 ms 宕机。
        Akka的特点:
        1.更加简单的并发策略Simpler Concurrency,通过Actors STM & Transactors能够简化编写可靠的并行计算。
        2.EDA架构Event-driven Architecture,完美的异步事件驱动架构,不会堵塞。
        3.真正的可伸缩性,使用异步消息在多核以及多个节点之间扩展。
        4.容错性,重视失败。
        5.远程透明性
        Actor模型并非什么新鲜事物,它由Carl Hewitt于上世纪70年代早期提出,目的是为了解决分布式编程中一系列的编程问题。其特点如下:
        系统中的所有事物都可以扮演一个Actor
        Actor之间完全独立
        在收到消息时Actor所采取的所有动作都是并行的,在一个方法中的动作没有明确的顺序
        Actor由标识和当前行为描述
        Actor可能被分成原始(primitive)和非原始(non primitive)类别
        非原始Actor有
            由一个邮件地址表示的标识
            当前行为由一组知识(acquaintances)(实例变量或本地状态)和定义Actor在收到消息时将采取的动作组成
        消息传递是非阻塞和异步的,其机制是邮件队列(mail-queue)
        所有消息发送都是并行的
    2、Oschat中的Akka
        在Oschat中使用Akka作为消息的分发核心,这里有一个核心的MainActor和一个Main WebSocketServlet,可以把它看做为是邮局。而每一个在线用户作为作为它Child Actor,每个用户的主键作为Actor的标识。每个Actor对象里面放了用户对象和多个WebSocket通信对象,比如有 A 和 B 在聊天,那么当A,B分别登录的时候MainActor会创建A.Actor 和 B.Actor。当A发送一条信息给B的时候,会先创建一个WebSocket对象,以<B.id,Socket> B.id 作为键值对放在A.Actor中,然后把消息发给MainActor,MainActor会告诉B 有人想跟你聊天,B接受后同样会创建 <A.id,Socket>,这样MainActor把消息发给 B.Actor的时候,B.Actor根据消息的来源人的id获取对应的WebSocket对象,最后把消息写给客户端。
    二、Oschat Client
            Oschat 的客户端使用了node-webkit进行开发,选择node-webkit的主要原因是html5,还有node-webkit已经很成熟,已经有不少基于它的商业产品【https://github.com/rogerwang/node-webkit/wiki/List-of-apps-and-companies-using-node-webkit】,而且在git上面很活跃。
    下面是目前界面的两个截图, 自己看着都觉得很丑啊! 猪哥,答应我的设计图呢~~
    三、开源
        开源地址:  Osc@Git  http://git.oschina.net/for-1988/oschat
        WebSocket感觉已经比较成熟的了,支持二进制传输,已有基于WebSocket的商业视频通讯。文件传输、视频音频将是我下面主要做的事情。

转载地址:http://ysdml.baihongyu.com/

你可能感兴趣的文章
联想Luigi Brochard:高性能计算三大战略, 推动人工智能飞速发展
查看>>
芒果贴冯振:我是怎么做老年人产品的
查看>>
软银集团任命新董事 ARM与Sprint CEO正式进入董事会
查看>>
“630”后市场急冷 台湾光伏企业营收下滑
查看>>
Facebook调整动态消息算法:更加重视朋友家人的帖子
查看>>
内蒙古云计算 向国家级基地迈进
查看>>
中生代嘉年华 | OKR管理
查看>>
详解让乌克兰总理都“哭泣”的勒索病毒,你到底要不要怕
查看>>
发展人工智能让用户丧失隐私?库克说不
查看>>
智能家居热潮引来资本大佬
查看>>
经济学人:富士康收购夏普风险不小
查看>>
视频会议新格局确立 云计算开启技术叠加时代
查看>>
云存储安防领域应用面广 系视频监控中不可或缺的一环
查看>>
观点:苹果需要一位像微软纳德拉似的CEO
查看>>
【云栖精选7月刊】抛开晦涩的算法、模型,让我们来谈谈互联网架构
查看>>
自动化测试框架PhoenixAutotest入门
查看>>
2016中国容器技术调研报告:逾八成用户选择拥抱
查看>>
云计算工程师的工作需要技术和技能相结合
查看>>
苹果连续四年成为全球最具价值品牌 前十有六家科技公司
查看>>
芮勇出任联想CTO,阿里巴巴获CIKM Cup冠军|AI科技评论周刊
查看>>