Spring实现Websocket

1.加入js依赖,浏览器不支持websocket时,使用sockJS

<span style="font-size:18px;"><span style="font-size:18px;"><script type="text/javascript" src="js/sockjs-0.3.4.min.js"></script>
<script type="text/javascript" src="js/stomp.min.js"></script></span></span>

2.JS实现

<span style="font-size:18px;"><span style="font-size:18px;">   initWebSocketConnection: function () {
                //Create stomp client over sockJS protocol
                var sock = new SockJS('/webSocketVisitor');
                stomp = Stomp.over(sock);
                // Connect to server via websocket
                stomp.connect({}, _this.connectCallback, _this.errorCallback);
            },
            disWebSocketWebSocketConnection: function () {
                stomp && stomp.disconnect(function () {
                });
            },
            //Callback function to be called when stomp client is connected to server
            connectCallback: function () {
                stomp.subscribe('/topic/uploadVisitor', _this.parseEvent);
            },
            //Callback function to be called when stomp client could not connect to server
            errorCallback: function () {
                alert(jQuery.i18n.prop('pb.label.site.fail.to.link.server.tip'));
            },
            parseEvent:function (frame) {
                var entry = JSON.parse(frame.body);
                alert(entry.visitorName)
            },</span></span>

3.注册

<span style="font-size:18px;"><span style="font-size:18px;">@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer
{
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry)
    {
        registry.addEndpoint("/webSocketVisitor").addInterceptors(new HttpSessionHandshakeInterceptor()).withSockJS();
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config)
    {
        config.enableSimpleBroker("/topic", "/queue");
        config.setApplicationDestinationPrefixes("/wsapp");
    }
}</span></span>
4.消息发送模板

 

<span style="font-size:18px;"><span style="font-size:18px;">@Component
public class RegisterVisitorEvent {
    @Autowired
    private SimpMessagingTemplate message;

    public void broadcastVisitor(RegisterVisitor visitor){
        message.convertAndSend("/topic/uploadVisitor",visitor);
    }
}</span></span>

5.调用

 

<span style="font-size:18px;"><span style="font-size:18px;">    @Autowired
    private RegisterVisitorEvent registerVisitorEvent;
    
    @RequestMapping(value = "/add")
    @ResponseBody
    public JsonResponse add(RegisterVisitorCustom visitor, @RequestParam(value = "suiteList[]", required = false) List<Object> suiteList, HttpServletRequest request){
        JsonResponse jr = new JsonResponse();
        List<Suite> suites = new ArrayList<>();
        if (null != suiteList){
            for (Object object : suiteList){
                Suite suite = JSONObject.parseObject(object.toString(),Suite.class);//将建json对象转换为JavaBean对象
                suites.add(suite);
            }
        }
        Admin admin = CurrentAdminUtil.getCurrentAdmin(request);
        visitor.setAdminId(admin.getId());
        visitor.setAdminName(admin.getName());
        visitor.setSuites(suites);
        visitor.setCreateTime(new Date());
        visitorService.addVisitorAndSuite(visitor);
        registerVisitorEvent.broadcastVisitor(visitor);
        jr.setSuc(JsonResponse.SUCCESS);
        return jr;
    }</span></span>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值