• 大小: 227KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-08
  • 语言: Java
  • 标签: websocket  java  

资源简介

基于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.xml
     文件          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\meta-INF\
     文件          39  2019-01-08 09:10  Chat_01\WebRoot\meta-INF\MANIFEST.MF
     目录           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.xml

评论

共有 条评论