通过webscoket往前端推送数据

  • Post author:
  • Post category:其他


controller或者service层,哪里需要写哪里

list就是要推送的数据,cabinetList是controller的路径名

有log,就要在开头加上 @Slf4j 注解,与service或者controller同辈

import lombok.extern.slf4j.Slf4j;

@Slf4j
@Api("网站首页")
@RestController
@RequestMapping("/index")
public class IndexController extends BaseController {
   
    @Autowired
    private IIndexService indexService;

    @ApiOperation("首页数据展示")
    @PreAuthorize("@ss.hasPermi('index:show')")
    @GetMapping
    public AjaxResult show() throws IOException {
   

        try {
   
            IndexVo indexVo = indexService.show();
            System.out.println("首页数据推送数据:" + indexVo);
            log.info("websocket 首页数据推送数据:{}", indexVo);
            WebSocketServer.sendInfo(indexVo, "index");

            return AjaxResult.success("首页请求成功,请从websocket中获取首页数据");
        } catch (IOException e) {
   
            e.printStackTrace();
            return AjaxResult.error("首页请求失败,原因:{}",e.getMessage());
        }

    }
}
}

WebSocketServer

import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import javax.websocket.*;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.Objects;
import java.util.concurrent.CopyOnWriteArraySet;
/**
 * @author Bingnan.Wang
 * @date 2021-10-28 15:46
 */
@ServerEndpoint("/websocket/{sid}")
@Slf4j
@Component
public class WebSocketServer {
   

	/**
	 * concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。
	 */
	private static CopyOnWriteArraySet<WebSocketServer> webSocketSet = new CopyOn



版权声明:本文为qq_48012160原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。