协作开发:NetCaller(基于java技术的点对点聊天程序)
NetCaller设计草案
系统名称:NetCaller(基于java技术的点对点聊天程序)
设计目的:使用java技术提供一个完全跨平台使用的通用网络聊天工具,不受服务器端的限制,充分发挥各客户机的能力。
开发背景:目前没有类似的软件产品能够提供完全的跨平台能力,而且大多是使用服务器/客户端方式开发,使用者受限于服务器的服务能力和状态,一旦服务器瘫痪将造成所有用户的通讯中断。而且在服务商的用户达到一定数量后开始对用户施加限制和增加用户不愿看到的内容以及增加广告,例如oicq。由于java技术已经被大多流行的系统所接受,而使用swing技术开发的java程序可以直接在各个平台上运行,通过使用tcp/ip技术又可以实现通讯的跨平台性,因此本系统理论上是完全可以跨平台使用的。
开发环境:软件要求jdk1.2及以上版本,工具不限,系统不限,根据最后设计方案可能要求增加一些辅助的java API,例如java Mail。
总体设计
l 界面设计:界面的设计要求和oicq大体相同。要求基本实现和它一样的特性,功能上不同的地方可以忽略。不要求实现需要系统相关的功能,例如自动隐藏,如果可以在各平台下实现则进行开发。
l 主要功能:一点对多点的通讯能力,会议模式,二人世界模式,文件传送,ip变更的自动通知能力,自动连接,好友记录,聊天记录,定时自动连接,基本超文本显式能力,黑名单,名片传递,界面更换,头像库自动扩充,暂时下线,隐身。
功能说明
l 一对多通讯能力:一个客户端程序可以和多个其它客户端通讯,在一个ip上可同时存在多个客户端。
l 会议模式:一个客户端可以成为会议主叫方,主叫方在会议模式形成后临时充当会议服务器,负责接收各成员的信息并将之传递到会议中的其它所有成员,主叫方自动成为会议的管理者,可以将其它成员赶出本会议。
l 二人世界模式:已连接的两个客户可以进入二人世界模式,模式的形成需要经过被呼叫方的同意,任何一方可以不经对方同意随时退出此模式,此模式即告结束。在此模式中时的输入基本上立即反应到对方的输出窗口,此窗口是一个独立的窗口,不会影响主程序的执行以及和其它成员的通讯。
l 文件传送:可以进行文件的传递,文件格式没有限制。
l ip变更自动通知:通知的方式待定,考虑使用mail作为中介。另外可以增加服务器方案,ip的变更将通知服务器更新自己的ip信息,以便其它用户在查询服务器时可以得到最新信息。具体见后面的相关说明。
l 自动连接:一方主动连接另一方时不需要经过被呼叫方的同意,但是连接建立后呼叫方在被呼叫方的陌生人里面,而被呼叫方在呼叫方的好友名单里,如果呼叫方的ip或者mail地址符合被呼叫方的某个好友的记录则进入好友名单,并根据规则更新好友记录。规则是如果mail和ip都符合则直接进入好友名单,如果只有ip符合,则提示是否加入好友名单还是覆盖原记录或者不予理会而放入陌生人名单,如果mail符合则检查传送的mail拥有权口令,口令符合则自动更新该好友的ip,不符合则提示是修改该好友的mail拥有权口令而更新ip还是认为该连接是mail冒充而忽略该连接请求。
l 好友记录:记录好友的基本信息。
l 聊天记录:记录聊天内容,文件格式待定。
l 定时自动连接:对于好友名单中的未在线好友定时自动发送连接请求,时间间隔可以设置。
l 超文本显式能力:信息分为普通文本信息和朝文本信息,在信息输入的时候可选,在输入超文本信息的时候可以建立几个小工具以方便输入,格式以标准的HTML标签为准,主要是几个文本格式控制标签,如font、b、I、center、h为主,可以考虑增加几个常用的图片,如表情,花等而添加img标签的使用。另外可以考虑使用的是ul、ol等列表标签的使用,其它未用标签简的内容忽略。
l 黑名单:可以将好友和陌生人加入黑名单,在黑名单中的人的连接请求及信息将被忽略。
l 名片传递:由于连接时传送的基本信息基本不可信,因此对于可信任的好友或者陌生人可以将自己的名片传递给他,接收方自动更新对于记录。一个用户可以设置多个名片,因此名片的真实性不做保证。信息可以分为:基本信息,备注,名片。基本信息是在连接时自动传递的,备注是用户为好友添加的,名片是自动更新的,但是只能保存一个(可能对方有多个)。
l 界面更换:可以使用皮肤库中的不同配色方案。
l 头像库自动更新:用户可以自己收集头像并用于自己,在连接时通知被连接方自己使用的是自定义头像,被连接方根据发送的文件名在自己的头像库中查找是否已经有该头像,有则忽略,否则提示用户是否接收该头像,选择不接收则将该好友的头像设置为缺省头像。
l 暂时下线:用户暂时有事,不能进行正常的聊天,连接不断开,可以向之发送信息,但是不能提交会议、二人世界等需要对方确认的信息。
l 隐身:在已连接时从在线好友名单上显示下线,但是实际连接未断开,还可以进行正常的通讯。如果刚刚启动,则和可建立连接的好友建立连接,但是在对方的在线名单上不显示。
功能开发进度
上面的功能只是考虑的最后需要完备的功能,在开始阶段可以只实现基本的功能,开发顺序是:
1. 一对多,定时自动连接,好友记录,自动连接;这些是最基本的功能,必须完成。
2. ip变更自动通知,文件传送,黑名单,聊天记录;基本扩充功能。
3. 名片传递,会议,二人世界;扩充功能。
4. 超文本,暂时离线,隐身;功能完善。
5. 界面更换,头像库自动扩充;界面完善。
为推广使用而考虑的事情
为了使更多的使用者相互之间知道对方的存在,考虑建立一个服务器,存放用户的基本信息,mail,ip,端口,昵称,性别,年龄,地区,只有mail,ip,端口和昵称是必填的,昵称可以重复,不存储其它信息,必要信息在连接时由连接双方传递。服务器不保证对方的信息是最新的,信息的更新依赖于使用者向服务器提交自己的更新信息,服务器不能向使用者索取,只能等待用户自己提交。服务器不负责各客户端的连接的建立,而仅仅是一个ip信息存储器。用户的ip更新可以自己设置为自动提交和手动提交,在自动提交时,在程序启动时就试图和服务器建立短暂连接,提交自己的ip信息。
以上是开发草案。
请对草案中存在的问题提出改进意见,并对草案的可行性发表看法。
有合作开发兴趣的朋友可以加入:
http://www.smiling.com.cn/group/homepage.ecgi?group_id=27119