导航:首页 > 编程语言 > javawebsocket聊天

javawebsocket聊天

发布时间:2022-05-04 19:16:34

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,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。
在以前的消息推送机制中,用的都是 Ajax 轮询(polling),在特定的时间间隔由浏览器自动发出请求,将服务器的消息主动的拉回来,这种方式是非常消耗资源的,因为本质还是http请求,而且显得非常笨拙。而WebSocket 在浏览器和服务器完成一个握手的动作,在建立连接之后,服务器可以主动传送数据给客户端,客户端也可以随时向服务器发送数据。
WebSocket协议是基于TCP的一种新的网络协议。实现了浏览器与服务器全双工(full-plex)通信——允许服务器主动发送信息给客户端。也可以选择第三方推送平台来实现,比如极光推送就不错。

阅读全文

与javawebsocket聊天相关的资料

热点内容
fibonacci数列算法 浏览:775
产品经理要和程序员吵架吗 浏览:252
grub2命令行 浏览:618
无法获取加密卡信息 浏览:774
云服务器网卡充值 浏览:509
编程就是软件 浏览:49
服务器如何添加权限 浏览:437
引用指针编程 浏览:851
手机加密日记本苹果版下载 浏览:63
命令行括号 浏览:176
java程序升级 浏览:490
排序算法之插入类 浏览:227
gcccreate命令 浏览:73
海尔监控用什么app 浏览:64
系统盘被压缩开不了机 浏览:984
linuxredis30 浏览:541
狸窝pdf转换器 浏览:696
ajax调用java后台 浏览:906
活塞式压缩机常见故障 浏览:614
break算法 浏览:731