当前位置: 首页 > news >正文

有关网站建设文章网站后台示演

有关网站建设文章,网站后台示演,泉州网站制作运营商专业,品牌设计课程目录 一、前言二、Principal三、使用 一、前言 我们知道可以使用客户端订阅的主题前缀从 stomp 服务器向客户端发送消息,例如 /topic/hello。我们还知道我们可以向特定用户发送消息,因为 spring 提供了convertAndSendToUser(username, destination, mes…

目录

  • 一、前言
  • 二、Principal
  • 三、使用

一、前言

我们知道可以使用客户端订阅的主题前缀从 stomp 服务器向客户端发送消息,例如 /topic/hello。我们还知道我们可以向特定用户发送消息,因为 spring 提供了convertAndSendToUser(username, destination, message)API。它接受一个字符串用户名,这意味着如果我们以某种方式为每个连接都有一个唯一的用户名,我们能够向订阅某个主题的特定用户发送消息。

那么,这个用户名来自哪里?或者说它是如何用这个用户名确定对应连接的?

二、Principal

对于上面的回答是:用户名是 java.security.Principal 的一部分。每个StompHeaderAccessor或WebSocketSession对象都有此主体的实例,我们可以从中获取用户名。但是,它不是自动生成的。它必须由服务器为每个会话手动生成。

要使用它,必须先实现它:

class StompPrincipal implements Principal {String nameStompPrincipal(String name) {this.name = name}@OverrideString getName() {return name}
}

然后,通过覆盖 DefaultHandshakeHandler 为每个连接生成唯一的用户名。可以使用任何逻辑来生成用户名。这是使用 UUID 的一种潜在逻辑:

class CustomHandshakeHandler extends DefaultHandshakeHandler {@Overrideprotected Principal determineUser(ServerHttpRequest request,WebSocketHandler wsHandler,Map<String, Object> attributes) {return new StompPrincipal(UUID.randomUUID().toString())}
}

最后,需要配置 Websocket 以使用自定义握手处理程序。

@Override
void registerStompEndpoints(StompEndpointRegistry stompEndpointRegistry) {stompEndpointRegistry.addEndpoint("/stomp") .setHandshakeHandler(new CustomHandshakeHandler()) //在这里设置.withSockJS() 
}

三、使用

现在,服务器已配置为为每个连接生成唯一的主体名称。它将将该主体作为对象的一部分传递StompHeaderAccessor,可以通过连接事件侦听器、MessageMapping 函数等访问这些对象…

来自事件监听器:

@EventListener
void handleSessionConnectedEvent(SessionConnectedEvent event) {// Get AccessorStompHeaderAccessor sha = StompHeaderAccessor.wrap(event.getMessage())
}

来自消息映射 API:

@MessageMapping('/hello')
protected void hello(SimpMessageHeaderAccessor sha, Map message) {// sha 在参数中可用
}

使用convertAndSendToUser(…),向用户发送消息时,使用类似这样的内容:

convertAndSendToUser(sha.session.principal.name, '/topic/hello', message)

但是,要订阅客户端,必须使用:

client.subscribe('/user/topic/hello', callback)

如果要接收广播:

client.subscribe('/topic/hello', callback)
http://www.yayakq.cn/news/62085/

相关文章:

  • 瑞安市住房和城乡建设局网站英文网站建设电话
  • 杭州网站建设优化专业网站定制公司
  • 酒泉百度做网站多少钱个人视频网站注册平台
  • 公司网站服务费计入什么科目购物网站项目开发
  • 集团网站模板镇江seo公司
  • 网站推广优化联系方式做单本小说网站怎么样
  • 外贸网站做多少钱的玉树wap网站建设公司
  • 链天网站建设wordpress怎么做博客
  • wordpress托管和建站石家庄网站设计培训班
  • 凡科网站官网登录入口北京专业的网站ui设计公司
  • 福海网站制作公司英文网站多少钱
  • 工程信息网站哪家做的较好wordpress音乐悬浮
  • 做资金盘网站违法吗哪个cms方便快速建站
  • 设计logo网站赚钱南宁网站建设索王道下拉
  • 网站的布局结构亚马逊aws永久免费服务69
  • 怎么创建一个网站如何在一个数据库做两个网站
  • 校考前做试题的网站网站建设死人接单
  • 网站免费建站中国职业培训在线
  • 网站建设台州动漫画设计与制作是学什么
  • 怎么做个人网站建设修改wordpress自带小工具
  • 网站建设氺金手指排名15在哪里做企业网站
  • 网站开发技术的发展流程图公众平台公众号平台
  • 网站自己建设国家城乡建设网站
  • 系部网站建设标准四川建设网证书查询
  • 织梦网站tag自定义插件网站建设公司资料大全
  • 宁波网站建设的步骤过程龙口网站制作价格
  • 设计论坛最好的网站厦门广长翔建设有限公司
  • 建设厅网站怎么打印不出来一个公司可以做几个网站
  • 服务器做网站上传快好还是下载快好装修设计软件知乎
  • 松江网站建设品划网络设备上哪个网站做外贸推广