第一次听说 websocket 是在一次面试中。当然,第一次听说 肯定是 不知道。
后来 就开始 百度 websocket。如果不知道它是什么,就自行百度一下。反正,它就是一个协议,可以完成 全双工 通信,也就是 客户端 服务端?可以同时互相 发消息,比如 你进入了一个 推销 产品的页面,突然弹个 框出来 问你要不要 买什么什么的,那个 就是 用 websocket 来实现的 由服务器主动推送消息到浏览器。
大多浏览器 已经 实现了 websocket 协议。
web容器,像 tomcat ,高版本的 也是 实现了。
如果百度之后,还是不懂 websocket 是什么,那么 来一个 小例子,应该就知道了,至少能看到 一个真正存在的。
在你的 web 项目中,加入以下代码:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.websocket.*;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
@ServerEndpoint(value="/wsTest")
public class WSTest {
private Logger logger = LoggerFactory.getLogger(WSTest.class);
@OnMessage
public void onMessage(String msg,Session session) throws IOException {
session.getBasicRemote().sendText("收到 消息 " + msg);
new Thread(()->{
try{
int i=0;
while (true) {
// 业务处理逻辑
Thread.sleep(1000 * 3);
// 向客户端 推送消息
session.getBasicRemote().sendText("有新消息了。。。");
i++;
if (i==10){
// 服务端主动关闭连接
session.close();
logger.info("close...");
}
}
}catch (Exception e){
}
}).start();
}
}
需要引入jar
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.1</version>
<!-- <scope>provided</scope>-->
</dependency>
启动 tomcat 服务,启动成功后,http://coolaf.com/tool/chattest?通过这个地址来测试:
ws://localhost:8080/demon/wsTest
|