Ⅰ java如何实现一对一聊天谢谢了。
WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。
WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。
Ⅱ 怎样用java web和websocket实现网页即时通讯
使用7z格式压缩上传
下载1: http://vdisk.weibo.com/s/D7LHb/1369631064
下载2: att.newsmth.net/att.php?p.75.25665.766.7z
Java版源代码下载:http://vdisk.weibo.com/s/I26Jq
(有些网友对C++如何实现感兴趣,推荐一下Poco带的WebSocket功能,把Java源代码翻译成C++就行了)
1. 说明:
utf8版本,支持各种语言版本的windows系统
程序内嵌数据库
用户帐号非明文存储
在Firefox/Chrome浏览器测试通过,建议使用Chrome,Firefox不支持mp3的消息提示音
2. 现有功能
注册/登录/搜索/添加好友(需要双方互相添加对方为好友,才能互相聊天)
抖动窗口
两种状态,登录/离线
3.可扩展的功能
使用Windows域用户帐号,无需注册
收发离线信息
查看历史信息
新消息提示
群聊
共享文件
4. (可能)存在的问题
并发性未作充分测试
添加好友的确认
5. 适用的场景
学校
小公司
6.使用
解压后双击执行start.bat,将自动进入初始界面,如下图
默认使用80端口,若80端口已被占用,修改start.bat中的setserver_port=80
双击左上角图标,弹出对话框,可以选择注册
注册成功
登录
搜索好友,如不提供搜索条件,则返回所有已注册用户
添加好友
添加好友提示
聊天
Ⅲ java websocket web网页聊天怎么实现
websocket 是反向推送的一种类型
聊天需要实时性高,在A第一次发送信息给B的时候需要建立websocket的连接,A向B发送信息就通过websocket完成。
A如果关闭窗口则websocket断开连接
Ⅳ java socket 怎么给websocket发信息
1.InitServlet
该类主要是用来初始化构造将来存储用户身份信息的map仓库,利用其初始化方法Init 初始化仓库, 利用其静态方法getSocketList 获得对应的用户身份信息。
webSocket ,我认为MessageInbound 用来识别登录人的信息,用它来找到对应的人,推送消息。每次登录都会产生一个MessageInbound。
这里的HashMap<String,MessageInbound> :string 存储用户session的登录id,MessageInbound存储 推送需要的身份信息。以上属于个人口头话理解。
packagesocket;
importjava.nio.CharBuffer;
importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.List;
importjavax.servlet.ServletConfig;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importorg.apache.catalina.websocket.MessageInbound;
{
=-3163557381361759907L;
//privatestaticList<MessageInbound>socketList;
privatestaticHashMap<String,MessageInbound>socketList;
publicvoidinit(ServletConfigconfig)throwsServletException{
//InitServlet.socketList=newArrayList<MessageInbound>();
InitServlet.socketList=newHashMap<String,MessageInbound>();
super.init(config);
System.out.println("Serverstart============");
}
publicstaticHashMap<String,MessageInbound>getSocketList(){
returnInitServlet.socketList;
}
/*publicstaticList<MessageInbound>getSocketList(){
returnInitServlet.socketList;
}
*/}
2.MyWebSocketServlet
websocket用来建立连接的servlet,建立连接时,首先在session获取该登录人的userId,在调用MyMessageInbound构造函数传入userId
packagesocket;
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.nio.CharBuffer;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importorg.apache.catalina.websocket.StreamInbound;
importorg.apache.catalina.websocket.WebSocketServlet;
/**
*
*@ClassName:MyWebSocketServlet
*@Description:建立连接时创立
*@authormangues
*@date2015-7-19
*/
{
publicStringgetUser(HttpServletRequestrequest){
StringuserName=(String)request.getSession().getAttribute("user");
if(userName==null){
returnnull;
}
returnuserName;
//return(String)request.getAttribute("user");
}
@Override
(Stringarg0,
HttpServletRequestrequest){
System.out.println("##########");
returnnewMyMessageInbound(this.getUser(request));
}
}
3.onOpen方法调用InitServlet的map身份仓库,
放入用户userId 和 对应该登录用户的websocket身份信息MessageInbound (可以用userId来寻找到推送需要的 身份MessageInbound)
onTextMessage :用来获取消息,并发送消息
packagesocket;
importjava.io.IOException;
importjava.nio.ByteBuffer;
importjava.nio.CharBuffer;
importjava.util.HashMap;
importorg.apache.catalina.websocket.MessageInbound;
importorg.apache.catalina.websocket.WsOutbound;
importutil.MessageUtil;
{
privateStringname;
publicMyMessageInbound(){
super();
}
publicMyMessageInbound(Stringname){
super();
this.name=name;
}
@Override
protectedvoidonBinaryMessage(ByteBufferarg0)throwsIOException{
//TODOAuto-generatedmethodstub
}
@Override
protectedvoidonTextMessage(CharBuffermsg)throwsIOException{
//用户所发消息处理后的map
HashMap<String,String>messageMap=MessageUtil.getMessage(msg);//处理消息类
//上线用户集合类map
HashMap<String,MessageInbound>userMsgMap=InitServlet.getSocketList();
StringfromName=messageMap.get("fromName");//消息来自人的userId
StringtoName=messageMap.get("toName");//消息发往人的userId
//获取该用户
MessageInboundmessageInbound=userMsgMap.get(toName);//在仓库中取出发往人的MessageInboundif(messageInbound!=null){//如果发往人存在进行操作
WsOutboundoutbound=messageInbound.getWsOutbound();
Stringcontent=messageMap.get("content");//获取消息内容
StringmsgContentString=fromName+""+content;//构造发送的消息
//发出去内容
CharBuffertoMsg=CharBuffer.wrap(msgContentString.toCharArray());
outbound.writeTextMessage(toMsg);//
outbound.flush();
}/*for(MessageInboundmessageInbound:InitServlet.getSocketList()){
CharBufferbuffer=CharBuffer.wrap(msg);
WsOutboundoutbound=messageInbound.getWsOutbound();
outbound.writeTextMessage(buffer);
outbound.flush();
}*/
}
@Override
protectedvoidonClose(intstatus){
InitServlet.getSocketList().remove(this);
super.onClose(status);
}
@Override
protectedvoidonOpen(WsOutboundoutbound){
super.onOpen(outbound);
//登录的用户注册进去
if(name!=null){
InitServlet.getSocketList().put(name,this);
}
//InitServlet.getSocketList().add(this);
}
}
4.消息处理类,处理前端发来的消息
packageutil;
importjava.nio.CharBuffer;
importjava.util.HashMap;
/**
*
*@ClassName:MessageUtil
*@Description:消息处理类
*@authormangues
*@date2015-7-19
*/
publicclassMessageUtil{
publicstaticHashMap<String,String>getMessage(CharBuffermsg){
HashMap<String,String>map=newHashMap<String,String>();
StringmsgString=msg.toString();
Stringm[]=msgString.split(",");
map.put("fromName",m[0]);
map.put("toName",m[1]);
map.put("content",m[2]);
returnmap;
}
}
Ⅳ 使用java+js如何实现网页在线聊天功能
聊天用到的问题其实就是websocket的频道订阅机制,这里需要用到单人聊天就是相互订阅对方的频道然后进行消息推送。
Ⅵ javaweb如何在网页实现聊天功能
后端技术就没什么好说的了,最简单的是利用application范围保存聊天记录.要求高一点可以是用类似redis的技术.
前端的话,
1,最简单的,通过刷新页面,每次请求消息记录页面.
2.Ajax技术.(1)Ajax轮询,(2)Ajax长连接.
3.websocket.类似socket,效率很高.需要Tomcat7才能支持.并且要求浏览器的版本较高.
Ⅶ 基于tomcat7,java,ext,websocket 怎么和指定的一个人进行聊天
简单来说,extjs <-> java/tomcat websocket链接。java端维护链接列表。extjs端发送信息,至少包含from to message三个。由extjs做客户端实现GUI,用户输入具体发送什么消息,发送给谁,完成后通过websocket链接发送到java端,Java端根据to信息选择相应的websocket链接发送到另一个GUI端,然后由extjs的处理程序在另一个GUI上显示。当然要一个最小的功能集至少要有:
发送:参数 from to message, from是为了另一个GUI可以实现类似reply的功能,或者类似私聊窗口的功能。to代表目标,可以扩展意义为组群发或者全员群发等
登录: 参数 name
退出:无参数
获取在线用户列表:无参数
java/tomcat端维护的websocket列表至少要是一个map的形式,即name->websocket的map
Ⅷ 想求一个java聊天小程序,使用图形用户界面和socket通讯 功能:可以实现两个人私聊功能和多人聊天功能。
我只介绍思路:
使用websocket创建ws服务器,nat123解析一个地址,分配一个端口给他用,发布到外网。
客户端拨通地址 登陆 接入websocket服务,心跳机制要做好,上下线掉线更新列表,注册存储用户信息,更新用户列表。
客户端可以发起群聊、私聊、收发文件、分享,甚至发送服务器消息,然后反馈消息,响应远程服务事件。
这就是一个聊天软件所做的事情,我介绍websocket可以响应多平台,多端通信。
Ⅸ java消息推送websocket怎么实现
java消息推送websocket实现原理:在实现websocket连线过程中,需要通过浏览器发出websocket连线请求,然后服务器发出回应,这个过程通常称为“握手” 。在 WebSocket API,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。