H5 WebSocket java服务端push

为什么80%的码农都做不了架构师?>>>   hot3.png

1.pom


	javax
	javaee-api
	7.0

这里使用javax.websocket,没有使用springmvc.websocket。

2.服务端 java代码

/***
 * webScoket服务.
* format URL as ws://ip:port/{finalName}/websocket/{module}/{key} * * * @author svili * @data 2017年7月12日 * */ /**component注解是为了使用spring容器的依赖注入,以实现服务端push()*/ @Component @ServerEndpoint(value = "/websocket/{module}/{key}") public class SimpleWebSocket { /** key = {module.key} */ private static ConcurrentHashMap> consumers = new ConcurrentHashMap>(); /** * 连接建立成功调用的方法 * * @param session * session为与某个客户端的连接会话,需要通过它来给客户端发送数据 */ @OnOpen public void onOpen(@PathParam("module") String module, @PathParam("key") String key, Session session) { if (!consumers.containsKey(module + "." + key)) { Set group = new HashSet(); group.add(session); consumers.put(module + "." + key, group); } else { consumers.get(module + "." + key).add(session); } } @OnMessage public void onMessage(@PathParam("module") String module, @PathParam("key") String key, String message, Session session) throws IOException { push(module, key, message); } @OnClose public void onClose(@PathParam("module") String module, @PathParam("key") String key, Session session) { Set group = consumers.get(module + "." + key); if (group != null) { group.remove(session); } } @OnError public void onError(@PathParam("module") String module, @PathParam("key") String key, Session session, Throwable error) { throw new RuntimeException(error); } /** 消息推送 */ public boolean push(String module, String key, String message) throws IOException { Set group = consumers.get(module + "." + key); if (group != null) { for (Session consumer : group) { consumer.getBasicRemote().sendText(message); } } return true; } }

3.客户端(浏览器)JS代码

4.服务端push

@RestController
@RequestMapping(value = "/websocket/test")
public class SocketTest {

	@Resource
	private SimpleWebSocket publisher;

	@RequestMapping("/push")
	public JsonModel push(String module, String key, String message) {
		try {
			publisher.push(module, key, message);
		} catch (IOException e) {
			e.printStackTrace();
		}
        //JsonModel是自定义的javaBean
		return JsonModel.success("success");
	}

}

 

转载于:https://my.oschina.net/svili/blog/1359008

你可能感兴趣的:(H5 WebSocket java服务端push)