发表于:2018-07-30 17:39:45
在上一篇文章里面提到过,由于websocket使用的是类socket方式与xmpp服务进行交互,因此没有办法像bosh那样在web后台先登录成功后,然后利用返回的sid和rid进行会话还原。那现在就是要思考使用websocket的前端怎么实现用户在web上登录成功了,websocket登录xmpp服务器也一并成功呢?而且还要实现用户切换刷新web页面,xmpp会话不掉线呢? 最初我想的是,是否要重新自定义xmpp的SASL身份验证协议或修改websocket流程?后来参考OAuth2.0协议,想到的是是否可以给登录成功的web用户发行token,然后xmpp的SASL的身份验证采用这个发行的token来进行验证登录呢?结合openfire 4.2.3我做了一下实践,效果还算不错。具体时序图如下: xmpp身份验证SASL协议,使用的是DIGEST-MD5方式验证,由于由web端控制toke...
发表于:2018-07-22 19:50:19
前言 XMPP在WEB浏览器端,可以使用两种方式进行登录,一种是流行的HTML5 websocket方式,还有一种是适合传统浏览器的BOSH(半轮询AJAX)的方式,两种方式的步骤结构都是一样的,只是发送的XML稍有差别。由于BOSH方式使用的是AJAX半轮询方式,而且通过HTTP交互是无状态的,为了保持每次与服务端通讯的会话session,因此发送的XML数据包,在BOSH方式传输过程中,使用<body>标签包裹,<body>标签有两个重要的属性,一个是sid:表示会话session的id;还有一个是rid:表示每一次请求的request id,且request id每一次都是在上一次的rid的基础上加1,因此需特别的注意。而websocket方式是浏览器端的类socket方式,一旦与服务器端连接成功后,就一直存在,是有状态的,因此不需要额外的session i...