spring-boot-starter-websocket入门

理解 1 有些浏览器不支持或一些限制代理可以阻止http协议开启websocket;也有可能因为websocket打开过久自动关闭它 所以Spring Framework提供了基于SockJS协议的透明后备方案。 这些方案可以通过配置启用,不需要修改应用程序;

    2 Spring Framework 4 包括一个新的spring-messaging 模块,其中包含Spring Integration项目的关键抽象,如Message,MessageChannel,MessageHandler等,可以作为这样的消息架构的基础。 该模块还包括一组用于将消息映射到方法的注释,类似于基于Spring MVC注释的编程模型。

后端实现:

@ServerEndpoint("/WebSocketServer")

public class ServerEndPoint808

{

@OnOpen

public void start(Sessionsession)

{

System.out.println("连接成功! " +session.getId());

}

@OnMessage

public void reMessage(Session session, Stringstr)

{

try

{

session.getBasicRemote().sendText(str+ " who areyou");

}

catch (IOExceptione)

{

e.printStackTrace();

}

}

@OnError

public void error(Session session, Throwablet){t.printStackTrace();}

@OnClose

public void close(){}

这个类作为WebSocket的一个服务端,@ServerEndpoint("/push")的annotation注释端点表示将WebSocket服务端运行在ws://[Server端IP或域名]:[Server端口]/项目/WebSocketServer的访问端点(这个类必须要有公共无参构造函数)

注意事项:  @serverendpoint 其中value是必须参数 subprotocols  encoder decoder configurator(后三个都是继承或实现接口再将完整类名作为参数值)

                 在一个端点类中,至多可以为三个方法标注@OnMessage注解       

               由于websocket的协议与Http协议是不同的,导致无法直接拿到session 可以添加@weblistener类实现ServletRequestListener 接口 重写modifyHandshake方法"((HttpServletRequest) sre.getServletRequest()).getSession()"

                If you have to send messages thatare not responses, store the Session object as an instance variableof the endpoint class in the method annotated with@OnOpen

               session可以basic与async两种remote变量 再调用变量的sendObject方法发送数据

 

前端实现:

参考地址:

http://www.cnblogs.com/best/archive/2016/09/12/5695570.html

https://blog.csdn.net/zlxls/article/details/78504591

https://blog.csdn.net/zilaike/article/details/78227810

以上是原生的WebSocket使用

stomp支持下的websocket:

https://www.cnblogs.com/myitroad/p/www.cnblogs.com/myitroad/p/9334141.html

https://www.cnblogs.com/GoodHelper/p/7078381.html

http://blog.geekidentity.com/spring/spring_websocket_translation/

 

你可能感兴趣的:(spring-boot-starter-websocket入门)