内容简介:版权声明:本文为博主原屙文章,喜欢你就担走。 https://blog.csdn.net/leftfist/article/details/89158022
版权声明:本文为博主原屙文章,喜欢你就担走。 https://blog.csdn.net/leftfist/article/details/89158022
websocket,提供客户端与服务器之间交流的双工协议(见拙作《WebSocket》),使用spring boot,可以很方便地提供websocket的服务器端。
主要是标上几个注解。
主体代码:mySocket.java
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.concurrent.CopyOnWriteArraySet;
@ServerEndpoint("/ws")
@Component
public class CaptureSocket {
private final static Logger LOGGER = LoggerFactory.getLogger(CaptureSocket.class);
private static CopyOnWriteArraySet<CaptureSocket> set = new CopyOnWriteArraySet<>();
private Session session;
@OnOpen
public void onOpen(Session session) throws IOException,InterruptedException {
this.session=session;
set.add(this);
LOGGER.info("新连接来自:" + session.getRequestURI().getHost());
}
@OnClose
public void onClose(){
set.remove(this);
LOGGER.info("连接关闭:" + this.session.getRequestURI().getHost());
}
@OnMessage
public void onMessage(String message,Session session){
LOGGER.info("来自客户端消息:" + message);
}
@OnError
public void onError(Session session,Throwable err){
LOGGER.info(err.getMessage());
err.printStackTrace();
}
}
配置文件:mySocketConfig.java
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
@Configuration
public class CaptureSocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter(){
return new ServerEndpointExporter();
}
}
这个配置文件无须显示调用,系统会自动解释。究其原因,应该是标注“@configuration”起了作用。
此配置文件的作用,从代码来看,是为了配合解释服务器端点用的?,主体代码mySocket.java里有个标注: @ServerEndpoint("/ws")
相应的客户端代码有:
var ws;
function wsconnect() {
var ws = new WebSocket("ws://192.168.0.98:8085/ws");//最后一个ws应该就是EndPoint
ws.onopen = function(evt) {
console.log("Connection open ...");
ws.send("hello socket!");
};
ws.onmessage = function(evt) {
console.log("receive message: " + evt.data + ":" + (new Date()));
};
ws.onclose = function(evt) {
console.log("Connection closed.Reconnect will be attempted in 1 second.", evt.reason);
setTimeout(function() {
ws = wsconnect();
}, 1000);
};
ws.onerror = function(err) {
console.error('Socket encountered error: ', err.message, 'Closing socket');
ws.close();
};
return ws;
}
$(function(){
ws = wsconnect();
});
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Erupt 1.6.1 发布,全注解式开发,通用后台管理框架,提供全栈注解级解决方案
- Erupt 1.6.3 发布,注解式开发全行业管理后台,提供全栈注解级解决方案
- 能快速提供一个子环境吗?
- 提供一个排查性能问题的思路
- 创新中关村报道称 Cocos 开发者沙龙为开发者、技术提供者等提供了交流合作平台
- C/C++ 提供 Python 接口
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
JavaScript编程精解
Marijn Haverbeke / 徐涛 / 机械工业出版社华章公司 / 2012-10-1 / 49.00元
如果你只想阅读一本关于JavaScript的图书,那么本书应该是你的首选。本书由世界级JavaScript程序员撰写,JavaScript之父和多位JavaScript专家鼎力推荐。本书适合作为系统学习JavaScript的参考书,它在写作思路上几乎与现有的所有同类书都不同,打破常规,将编程原理与运用规则完美地结合在一起,而且将所有知识点与一个又一个经典的编程故事融合在一起,读者可以在轻松的游戏式......一起来看看 《JavaScript编程精解》 这本书的介绍吧!