NexTalk技术白皮书

文档版本: 5.7 发布时间: 2014/10/15

NexTalk简介

NexTalk是基于WEB标准协议设计的,主要应用于WEB站点的,简单开放的即时消息系统。可快速为社区微博、电子商务、企业应用集成即时消息服务。

NexTalk架构上分解为:WebIM业务服务器 + 消息路由服务器 两个独立部分,遵循 Open Close的架构设计原则。WebIM插件方式与第三方的站点或应用的用户体系开放集成,独立的消息服务器负责稳定的连接管理、消息路由和消息推送。

NexTalk的架构设计上有以下几个特点:

  1. 开放设计,通过开放源码的WebIM开发包,可与站点或应用的用户体系、群组关系、消息处理无缝集成。

  2. 快速集成,NexTalk为常用的WEB框架提供了直接可用的开发包。5分钟启动demo,1天可完成开发集成。

  3. 方便定制,WebIM插件和前端代码全部开源,好友关系、消息路由全部可通过WebIM插件接口定制或扩展。例如实现动态好友关系,消息拦截过滤等。

NexTalk默认界面设计,简洁嵌入站点或应用的右下角,无需安装任何客户端:

NexTalk Screenshot

应用场景(Application)

社区网站

NexTalk可为社区⺴站(论坛、社区、微博)提供站内的即时消息,实现访客、⽤户与管理员间的在
线聊天,以提⾼社区⽤户的转化率与黏合度。

NexTalk为国内各开源社区系统开发了WebIM插件,DiscuzX, PhpWind, ThinkSNS, 记事狗, 近
乎SNS, UCHome等社区系统安装即用。

ScreenShot

电子商务

NexTalk可为电⼦商务⺴站提供类似58帮帮、淘宝旺旺、京东商城的在线客服,可在⺴站店铺、商品、订单、⽤户⻚⾯任何位置添加聊天按钮,向访客提供即时的在线咨询和服务。

LiveChat

在线客服

类似NexTalk.IM站点右下⾓的’在线⽀持’,访客直接与站点客服、管理员即时消息。客服可以查看访客来源、当前⻚⾯、地理位置等信息。

ScreenShot

企业应用

NexTalk可与企业OA、CRM、ERP系统集成,实现企业内部⽤户间在线即时消息。并⽀持公司部⻔、⽤户群组,临时讨论组等多种组织⽅式。NexTalk为PHP, Struts2, Spring3, Rails, .NET等Web框架提供了开发集成包。

功能列表(Features)

功能 发布版本
集成在浏览器右下⾓前端界⾯ 1.0
一对一聊天 (站点访客、⽤户、管理员间即时聊天) 1.0
群组聊天(聊天室),临时讨论组聊天 1.0
⺴站在线客服,访客与客服聊天 3.0
⺴站⻚⾯嵌⼊聊天按钮,例如"在线客服" 3.0
离线好友显⽰,发送离线消息 5.0
⽤户现场状态设置 1.0
⽤户间发送表情 1.0
用户间传送图⽚、⽂件 3.0
消息拦截、过滤、敏感词处理 4.0
简单的聊天机器人支持 5.0
可移动聊天窗口支持 5.0
手机版独立聊天窗口 5.5
界⾯菜单隐藏或定制,界⾯透明背景、缩放⽀持 3.0
⽤户界⾯提⽰⾳、收缩⼯具条、弹出窗⼝设置 3.0
简单的开源桌⾯客户端 5.0
Android手机客户端SDK 6.0
iOS手机客户端SDK 6.0

前端界⾯简洁集成在浏览器右下⾓

通过插件⽅式与WEB站点或应用无缝集成,前端界面简洁嵌入在浏览器右下角。界⾯采⽤标准HTML极简主义界⾯设计⻛格,横条⽅式浮动在社区⺴站下⽅,没有任何Flash/IFrame,⽀持⽆中断⻚⾯切换和多⻚⾯打开,并提供了20多种Theme和⽀持透明背景。

Theme

一对一聊天 (站点访客、⽤户、管理员间即时聊天)

NexTalk核⼼功能实现⽤户、管理员、访客间站内一对一即时聊天。WebIM插件与站点⽤户关系集成,建⽴起社区⽤户的IM好友关系。例如电子商务站点访客与客服,微博社区相互关注用户。

 One2One Chat

群组聊天(聊天室),临时讨论组聊天

Group Chat

⺴站在线客服,访客与客服聊天

NexTalk5.0开始⽀持⺴站在线客服,访客与管理员聊天,以帮助社区转化访客为⽤户。类似NexTalk.IM站点右下⾓的在线⽀持,访客可直接与站点客服、管理员即时消息。客服可以查看访客来源、当前⻚⾯、地理位置等信息。

Live Chat

⺴站⻚⾯任意位置嵌⼊聊天按钮,例如"在线客服"按钮

NexTalk⽀持在⺴站⻚⾯上嵌⼊聊天按钮,类似58同城和在线客服的⽅式,⽤户可通过点击聊天按
钮,打开右下⾓聊天窗⼝。

⺴站聊天按钮的⽂本、位置和样式均可配置。例如DiscuzX论坛中,是通过⽤户名后⾯增加⼀个⼩图
标实现。

NexTalk⻚⾯聊天按钮是通过HTML Dom扫描和调⽤WebIM接⼝直接实现,站点⺴站代码不需要做任
何修改。

ChatBtn

离线好友显⽰,发送离线消息

NexTalk5.0版本开始⽀持显⽰离线好友,⽀持发送离线消息。管理⻚⾯提供了“显⽰不在线好友”的配置项。

Offline Messages

⽤户现场状态设置

⽤户可以设置自身的现场状态,包括在线、忙碌、离开、隐⾝。

Presence

⽤户间表情、图⽚、⽂件传送,定制表情图标组

⽀持⽤户间发送表情、图⽚⽂件。WebIM插件配置⻚⾯可设置表情组名称。表情图标放置在static/images/emot/下,可替换或添加。NexTalk5.0版本⽀持⽤户间图⽚、⽂本、压缩⽂件传
送,可限定传送⽂件⼤⼩。

Emotion
Send File

消息拦截、过滤、敏感词处理

Censor

简单的聊天机器人支持

NexTalk5.7版本提供了WebimRobot对象,可接入简单的聊天机器人。

Robot

可移动聊天窗口支持

聊天窗口可以拖拽移动到网站任意位置。

Drag Window

手机版独立聊天窗口

NexTalk5.5版本发布了支持手机的ChatBox窗口,用户通过手机浏览网站时可通过ChatBox发起聊天

ChatBox

界⾯菜单隐藏或定制,界⾯透明背景、缩放⽀持

NexTalk前端Javascript/Ajax代码完全开源,界⾯上的菜单可由⽤户通过接⼝⾃定义。例如在
Discuz论坛,可以增加热贴等功能菜单,实现与社区⺴站的⽆缝集成。

⼯具栏⽀持透明背景和横幅⾃动收缩,插件设置界⾯提供了透明度设置参数。⽤户可以通过
界⾯设置是否缩放⼯具条。

Menu

Menu Shortcut

⽤户界⾯提⽰⾳、收缩⼯具条、弹出窗⼝设置

Setting

简单的开源桌⾯客户端

NexTalk5基于QT5.1开发的⼀个简单的跨平台桌⾯客户端,⽀持社区⺴站WebIM与桌⾯客户端消息互通。

框架开发包

NexTalk为常用的Web框架提供了集成开发包,PHP、Struts、Spring、ThinkPHP,.NET MVC,Rails等Web框架开发的项目直接可用。

开发包下载地址: http://nextalk.im/packages

Web框架 开发包 ⽀持版本
Spring3 https://github.com/webim/webim-for-spring3 Spring3
Struts2 https://github.com/webim/webim-for-struts2 Struts2
Struts1 https://github.com/webim/webim-for-struts1 Struts1
.NET https://github.com/webim/webim-plugin-dotnet4 DotNet4
Rails https://github.com/webim/webim-for-rails Rails4
ThinkPHP https://github.com/webim/webim-for-thinkphp ThinkPHP 3.x
CodeIgniter https://github.com/webim/webim-for-codeigniter CodeIgniter
PHP4 https://github.com/webim/webim-for-php4 ThinkPHP 3.x
PHP5 https://github.com/webim/webim-for-php5 CodeIgniter
SlimFramework https://github.com/webim/webim-for-slimframework SlimFramework
Django https://github.com/webim/webim-for-django Django

社区插件

NexTalk为国内各开源社区系统开发了可即装即用的WebIM插件,DiscuzX, PhpWind, ThinkSNS, 记事狗, 近乎SNS, UCHome等社区系统可直接使用。

插件下载地址: http://nextalk.im/plugins

开源社区 插件下载 支持版本
DiscuzX http://nextalk.im/plugins/discuzx PHP不低于5.1,Discuz X1, X1.5, X2.0, X2.5,X3.0
ThinkSNS http://nextalk.im/plugins/thinksns PHP5.0以上,ThinkSNS V3
记事狗 http://nextalk.im/plugins/jishigou PHP5.0以上,记事狗 V4
PhpWind http://nextalk.im/plugins/phpwind PHP5.1以上,PHPWind 7.x, 8.x
PhpWind9 http://nextalk.im/plugins/phpwind9 PHP5.1以上,PHPWind 9.x
Discuz http://nextalk.im/plugins/discuz Discuz7.2
UCHome http://nextalk.im/plugins/uchome UCHome2.0+
近乎SNS http://nextalk.im/plugins/jinhusns .NET4 MVC, C#, 近乎SNS4.x

技术架构(Architecture)

NexTalk基于WEB标准协议设计。架构上分解为:WebIM业务服务器 + 消息路由服务器 两个独立部分,遵循 Open Close的架构设计原则。实现上采用JSON/HTTP、JSONP长轮询、WebSocket长连接、MQTT消息路由分发。

NexTalk的Web业务服务器,通过开放源码的SDK接口集成,第三方站点的用户体系和数据库。然后通过独立的消息路由服务器负责稳定的连接管理、消息分发和推送。

![NexTalk Architecture] (http://nextalk.im/static/img/design/arch.png)

架构特点

  1. WebIM业务插件+消息服务器的架构设计,可与各类型站点和Web应用程序,无缝集成。NexTalk为各开源社区系统提供了成熟的可快速集成WebIM插件,并发布了丰富的程序语言开发包。

  2. 消息服务器基于Erlang、JSONP、WebSocket、MQTT等技术构建,用户直接通过跨域长连接/长轮询与消息服务器通信,极大减少了WebIM对站点本身的连接资源占用。通过消息服务器的分布式集群,可支持到100万并发用户的规模。

  3. 通过JSONP长轮训/WebSocket长连接技术,在Web上实现快速、准实时的即时消息推送。

  4. 支持无中断页面切换和多页面消息同步等WebIM核心技术。WEBIM与桌面IM软件有不同的应用场景,比如用户频繁切换页面,同时打开多个网站页面等。

  5. 不会泄露社区站点的任何用户数据,消息服务器不保存社区网站的任何隐私数据,无论是好友列表还是聊天记录,都通过WebIM插件保存在社区网站数据库。

  6. 完全基于HTTP和REST风格的WebIM协议和接口设计,友好支持WebIM插件二次开发,快速与各类网站无缝融合。

  7. 标准Javascript/Ajax构建的完整的前端界面,全面兼容各种浏览器。几面采用MVC架构设计,可灵活的配置或二次开发。

  8. MQTT协议,实现网站、手机与桌面的消息互通。

消息路由服务器

消息路由服务器是基于JSONP/WebSocket/MQTT协议构建。5.0版本
⼤幅改进了⺴络链接层和消息路由模块,以⽀持更⼤规模的并发连接和提升消息路由效率。通过Erlang语⾔实现可分布式集群,扩展⽀持到100万并发连接⽤户。

Router

消息服务器集群

NexTalk的消息服务器本⾝基于Erlang设计,⽀持服务器集群。当社区站点并发⽤户规模超过50K以上,需要集群部署时,启动多台消息服务器,执行下述集群命令即可:

./bin/nextalk cluster node

性能指标

NexTalk由Erlang开发的消息服务器,单节点可⽀持50~100K的并发⽤户,下⾯是在⼀台低端服务器上的测试结果。

测试环境:

配置 数值
CPU 双核2.4Ghz
Mem 4G
Os Ubuntu
Node 1

测试结果:

Performance 1

Performance 2

公司与开发者

NexTalk(原NextIM)成⽴于2007年,⼀直从事Web即时消息(WebIM)技术与产品研发,为各类⺴站和企业应用客⼾提供专业的站内即时消息。

支持联系: support@nextalk.im