WebSocket(含表情包)-聊天室

1.源码下载连接点击打开链接

提示:websocket需要tomcat7及其以上或者下载相应的jar包

  以下代码仅供参考,大神勿喷

2.代码演示

(1)Java类

package com.tt.webchat;

import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import java.util.concurrent.CopyOnWriteArraySet;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * 聊天服务
 */
@ServerEndpoint("/myChatServer")
public class ChatServer {
    // 用于统计用户数量
    private static AtomicInteger userNumber = new AtomicInteger(1);
    // 用户姓名
    private String name = "";
    // 使用集合来保存用户
    private static CopyOnWriteArraySet users = new CopyOnWriteArraySet();
    // 定义一个会话
    private Session session;

    /**
     * @param session 当连接成功是调用此方法
     */
    @OnOpen
    public void onOpen(Session session) {
        name = "博客" + userNumber.getAndIncrement();
        this.session = session;
        users.add(this);
        String info = ":加入了聊天室";
        sendMessage(info, session);

    }

    /**
     * @param message 当服务器接收到客服端发送数据时调用此方法
     */
    @OnMessage
    public void onMessage(String message, Session session) {

        sendMessage("说:" + message, session);
    }

    /**
     * 关闭时执行
     */
    @OnClose
    public void onClose() {
        users.remove(this);
        String info = "已离开聊天室";
        userNumber.decrementAndGet();
        sendMessage(info, session);
    }

    /**
     * @param mes 向客服端发送消息
     */
    private void sendMessage(String mes, Session session) {
        for (ChatServer websocket : users) {
            try {
                // 防止线程安全
                synchronized (ChatServer.class) {
                    String info = this.name;
                    if (session == websocket.session) {
                        info = "我";
                    }
                    String text = info + mes;
                    websocket.session.getBasicRemote().sendText(text);
                }

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

(2)jsp页面

<%--
  User:
  Date: 2018/6/14
  Time: 9:15
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>



    websocket
    
    


塔塔-聊天室

3.演示效果

WebSocket(含表情包)-聊天室_第1张图片

 

WebSocket(含表情包)-聊天室_第2张图片

你可能感兴趣的:(Java)