分类 server 下的文章

jdk下载/Linux64位 jdk1.8 jdk-8u161下载
看到在官网下载这个jdk1.8 8u161版本的都要注册账号,百度网盘下载地址:
linux 64 jdk1.8 jdk-8u161-linux-x64.tar.gz百度云盘下载链接:https://pan.baidu.com/s/18IicPYf7W0j-sHBXvfKyyg
windows 64 jdk1.8 8u161百度云盘下载链接:https://pan.baidu.com/s/1eZM0SnpjHY8Wp_H2gkFb7Q

Ubuntu直接安装,安装openjdk-8-jdk::

sudo apt-get install openjdk-8-jdk

springboot websocket
WebScocketConfig.java

@Configuration
public class WebScocketConfig {
    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }
}
````


<!--more-->

WebSocketServer.java

@ServerEndpoint("/websocket/{sid}")
@Component
public class WebSocketServer {

private static Logger log = LoggerFactory.getLogger(WebSocketServer.class);
private static final AtomicInteger onlineCount = new AtomicInteger(0);
// concurrent包的线程安全Set,用来存放每个客户端对应的Session对象。
private static CopyOnWriteArraySet<Session> setSession = new CopyOnWriteArraySet<Session>();

/**
 * 连接建立成功调用的方法
 */
@OnOpen
public void onOpen(Session session, @PathParam("sid") String sid) {
    setSession.add(session);
    int cnt = onlineCount.incrementAndGet(); // 在线数加1
    log.info("有连接加入,当前连接数为:{}{}", cnt, sid);
    System.out.println("---" +sid);
    SendMessage(session, "连接成功");
}

/**
 * 连接关闭调用的方法
 */
@OnClose
public void onClose(Session session) {
    setSession.remove(session);
    int cnt = onlineCount.decrementAndGet();
    log.info("有连接关闭,当前连接数为:{}", cnt);
}

/**
 * 收到客户端消息后调用的方法
 *
 * @param message 客户端发送过来的消息
 */
@OnMessage
public void onMessage(String message, Session session) {
    log.info("来自客户端的消息:{}", message);
    SendMessage(session, "收到消息,消息内容:" + message);

}

@OnError
public void onError(Session session, Throwable error) {
    log.error("发生错误:{},Session ID: {}", error.getMessage(), session.getId());
    error.printStackTrace();
}

/**
 * 发送消息,实践表明,每次浏览器刷新,session会发生变化。
 *
 * @param session
 * @param message
 */
public static void SendMessage(Session session, String message) {
    try {
        session.getBasicRemote().sendText(String.format(message));
    } catch (IOException e) {
        log.error("发送消息出错:{}", e.getMessage());
        e.printStackTrace();
    }
}

/**
 * 群发消息
 *
 * @param message
 * @throws IOException
 */
public static void BroadCastInfo(String message) throws IOException {
    for (Session session : setSession) {
        if (session.isOpen()) {
            SendMessage(session, message);
        }
    }
}

/**
 * 指定Session发送消息
 *
 * @param sessionId
 * @param message
 * @throws IOException
 */
public static void SendMessage(String message, String sessionId) throws IOException {
    Session session = null;
    for (Session s : setSession) {
        if (s.getId().equals(sessionId)) {
            session = s;
            break;
        }
    }
    if (session != null) {
        SendMessage(session, message);
    } else {
        log.warn("没有找到你指定ID的会话:{}", sessionId);
    }
}

}

- 阅读剩余部分 -

Maven异常:0.0.1-SNAPSHOT: Could not find artifact
原因是本地仓库缺少了xxx-SNAPSHOT, 原来是忘记了将父工程打包到本地仓库 ,运行聚合工程前记得先将依赖的工程都先Maven install到本地仓库,否则也会出现以上问题。用Maven install 对父工程安装到本地仓库,即可解决该问题。

Artifact contains illegal characters 工件包含非法字符
原因是Artifact字段不能用大写,先改小写,点Next,Next步骤后,New Project阶段改回大写即可。