资源简介
基于java Websocket开发的网页聊天工具,曾用于本人课程设计,在此放出造福大家

代码片段和文件信息
package socket;
import java.io.IOException;
import java.util.concurrent.CopyOnWriteArraySet;
import javax.websocket.OnClose;
import javax.websocket.onerror;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
//该注解用来指定一个URI,客户端可以通过这个URI来连接到WebSocket。类似Servlet的注解mapping。无需在web.xml中配置。
@ServerEndpoint(“/websocket“)
public class MyWebSocket {
// 静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。
private static int onlineCount = 0;
// concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。若要实现服务端与单一客户端通信的话,可以使用Map来存放,其中Key可以为用户标识
private static CopyOnWriteArraySet webSocketSet = new CopyOnWriteArraySet();
// 与某个客户端的连接会话,需要通过它来给客户端发送数据
private Session session;
/**
* 连接建立成功调用的方法
*
* @param session
* 可选的参数。session为与某个客户端的连接会话,需要通过它来给客户端发送数据
*/
@OnOpen
public void onOpen(Session session) {
this.session = session;
webSocketSet.add(this); // 加入set中
addOnlineCount(); // 在线数加1
System.out.println(“有新连接加入!当前在线人数为“ + getOnlineCount());
}
/**
* 连接关闭调用的方法
*/
@OnClose
public void onClose() {
webSocketSet.remove(this); // 从set中删除
subOnlineCount(); // 在线数减1
System.out.println(“有一连接关闭!当前在线人数为“ + getOnlineCount());
}
/**
* 收到客户端消息后调用的方法
*
* @param message
* 客户端发送过来的消息
* @param session
* 可选的参数
*/
@OnMessage
public void onMessage(String message Session session) {
System.out.println(“来自客户端的消息:“ + message);
// 群发消息
for (MyWebSocket item : webSocketSet) {
try {
item.sendMessage(message);
} catch (IOException e) {
e.printStackTrace();
continue;
}
}
}
/**
* 发生错误时调用
*
* @param session
* @param error
*/
@onerror
public void onerror(Session session Throwable error) {
System.out.println(“发生错误“);
error.printStackTrace();
}
/**
* 这个方法与上面几个方法不一样。没有用注解,是根据自己需要添加的方法。
*
* @param message
* @throws IOException
*/
public void sendMessage(String message) throws IOException {
this.session.getBasicRemote().sendText(message);
// this.session.getAsyncRemote().sendText(message);
}
public static synchronized int getOnlineCount() {
return onlineCount;
}
public static synchronized void addOnlineCount() {
MyWebSocket.onlineCount++;
}
public static synchronized void subOnlineCount() {
MyWebSocket.onlineCount--;
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-01-08 09:11 Chat_01\
文件 1093 2019-01-08 09:10 Chat_01\.classpath
文件 1057 2019-01-08 09:10 Chat_01\.project
目录 0 2019-01-08 09:11 Chat_01\.settings\
文件 564 2019-01-08 09:10 Chat_01\.settings\.jsdtscope
文件 364 2019-01-08 09:10 Chat_01\.settings\org.eclipse.jdt.core.prefs
文件 480 2019-01-08 09:10 Chat_01\.settings\org.eclipse.wst.common.component
文件 414 2019-01-08 09:10 Chat_01\.settings\org.eclipse.wst.common.project.facet.core.xm
文件 49 2019-01-08 09:10 Chat_01\.settings\org.eclipse.wst.jsdt.ui.superType.container
文件 6 2019-01-08 09:10 Chat_01\.settings\org.eclipse.wst.jsdt.ui.superType.name
目录 0 2019-01-08 09:11 Chat_01\src\
目录 0 2019-01-08 09:10 Chat_01\src\socket\
文件 3141 2019-01-08 09:10 Chat_01\src\socket\MyWebSocket.java
目录 0 2019-01-08 09:11 Chat_01\WebRoot\
文件 4381 2019-01-08 09:10 Chat_01\WebRoot\index.jsp
目录 0 2019-01-08 09:10 Chat_01\WebRoot\me
文件 39 2019-01-08 09:10 Chat_01\WebRoot\me
目录 0 2019-01-08 09:11 Chat_01\WebRoot\WEB-INF\
目录 0 2019-01-08 09:11 Chat_01\WebRoot\WEB-INF\classes\
目录 0 2019-01-08 09:10 Chat_01\WebRoot\WEB-INF\classes\socket\
文件 3199 2019-01-08 09:10 Chat_01\WebRoot\WEB-INF\classes\socket\MyWebSocket.class
目录 0 2019-01-08 09:11 Chat_01\WebRoot\WEB-INF\lib\
文件 209748 2019-01-08 09:10 Chat_01\WebRoot\WEB-INF\lib\tomcat-websocket.jar
文件 36661 2019-01-08 09:10 Chat_01\WebRoot\WEB-INF\lib\websocket-api.jar
文件 650 2019-01-08 09:10 Chat_01\WebRoot\WEB-INF\web.xm
- 上一篇:Java P2P聊天程序附带文档
- 下一篇:单击/网络五子棋(毕业设计包括论文)
相关资源
- 微博系统(Java源码,servlet+jsp),适
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
评论
共有 条评论