当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:14:00  来源:本站整理

推技术聊天室的实现(下)[Java编程]

赞助商链接



  本文“推技术聊天室的实现(下)[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

下面我们来看看具体实现流程:

聊天服务器的实现

我们的服务器的核心部份是ThreadedChatHandle类,我们需求处理的数据主要包含两部份——在线列表和用户发言.在线列表可以直接利用大的对象数组,这是基于一个聊天室容量是有限制的考虑.而用户的发言直接发到管道里面便可以了.

在线列表类的定义以下:

class Chater
{ private static Double id;//这个ID作为辨别号,同时
private Double socketid; file://与聊天主帧对应的Socket相关联.
private String nickname;// 用户昵称
private String passwd;// 用户昵称
private Int privilige;//
private String[] filter;//某个用户的过滤列表
private Double login_time;//记录登录时间,用以排除一些超时联接
private String color;//用户聊天颜色
……//限于篇幅,省略了相关的办法.
}

注意:以上用户数据大部份是在login阶段,用户通过身份考证今后填入的.只有socketid要等到聊天主帧(一个普通的聊天界面包含聊天主帧,发言帧,在线列表帧三个部份)显示今后才得到.假如超越一按时间,socketid还是没有填入,阐明浏览器获得主框架今后衔接中止了,这时刻就需求删除该用户数据.假如要实现象sohu那样的私聊的话,还应当增添用户IP地址的属性.

用户发言类的定义以下:

class Content
{ private Double timestamp;//时间戳
private Double fromChaterid;//发言人id
private Double toChaterid;//聊天对象id
private Boolen isSecurity;//能否私聊标志
private String theContent;//聊天内容,在构建器里处理过,已经包含表情等ht
ml文本.
……//限于篇幅,省略了相关的办法.
}

核心的ThreadedChatHandle类主要处理的工作是解析用户恳求.客户端发送的恳求的值,主要有login(考证身份,显示聊天室主框架)、joinchat(初始化聊天信息,如显示欢送等,显示聊天内容显示帧,并保持衔接,发送聊天信息.)、showtalk(显示发言的帧)、names(显示在线列表帧)、leave(用户点击按钮脱离聊天室)等等.

假定我们利用GET办法传送数据而不是通过POST办法提交表单的话,用户数据输入都是在URL里传送,下面是几个url实例,结合背面客户端流程,可以更好地理解ThreadedChatHandle类的职能:

这是一个用户名密码均为’aaa’的聊天用户登录系统,说了一句话“hello”,然撤退出所产生的一系列恳求:

/login?name=aaa&passwd=aaa
/joinchat?chaterid=555
/showtalk?chaterid=555
/names?chaterid=555
/speak?chaterid=555
/leave?chaterid=555
……


  以上是“推技术聊天室的实现(下)[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 推技术聊天室的实现(上)
  • 推技术聊天室的实现(下)
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .