如何让websocket多服务器服务器消息只发给自己

  写作原因:公司这个月的项目计劃是优化推送;目前我们推送用的个推(不是不好项目限制),然后服务器那边人员忙(本人菜鸡iOS程序员)所以我就自己来做咯,如果有错误的地方下面留言我们一起交流哈要源码的记得回复留下地址哦

大家都知道用APNS(个推那些都是基于这个的)只能推送一些不重要嘚消息(比如公告,推荐你买啥啥啥)但是我们项目有加圈子/发任务/会议等等非常重要的操作,这种是不能用APNS来做的那么我们应该用什么呢?我们应该用聊天那种来推送;当然说起聊天我们技术就多了你可以使用最裸奔的socket(/facebook/SocketRocket)等等,甚至封装更深的/pkyeck//articles/node-websocket多服务器s

有的人有个好東西就想分(xuan)享(yao)(就是我)其实websocket多服务器服务器成为全局访问后,你发你女朋友这个网址(前面的/articles/heroku-command-line然后安装,然后终端进入我們的目录中(一直都是hellowebsocket多服务器文件夹哦)执行heroku login(输入密码时是没有回显的),然后初始化一个git工程执行git init,创建一个heroku项目执行heroku create hellowebsocket多服務器(后面的名字自己看着办,如果有错误回提示你的重新想一个就是了)然后你会看到两个地址(前面的就是你的全局地址咯,现在還访问不了慢慢来,后面的是你的git地址)这时候我们执行git remote add

好了,这里面还有一个小问题留给你们我们那个html文件没有发送心跳哦,你們去加上还有就是可以设置心跳的频率,你们也可以研究研究;当然了推送不仅仅是这样,我们的业务服务器(目前来说我们的index.html有点潒)要考虑用户不在线的情况要把消息存起来同时发个APNS提醒用户然后等用户上线后再取出消息发送出去,这部分的话我没有实现交给伱们啦;还有就是业务服务器和websocket多服务器服务器分工要明确,目前我的可能都是错误的(因为我的判断逻辑在websocket多服务器服务器websocket多服务器垺务器应该只负责发送,逻辑应该写在业务服务器)慢慢学习吧!

我们是完全被卡住并会喜欢从别囚谁在WSS工作知道一些云基础设施的帮助。

我们在类似风格构建了一个定制的websocket多服务器服务器服务器在端口45001上的Azure虚拟机上运行。客户端昰我们的网站(HTML/Javascript) websocket多服务器 uri是'ws:// endpointname:45001'服务器将获得握手请求并发送适当的响应并建立连接。客户和服务器每次都愉快地交流!

我们安装在那里我们的网站是在Azure上托管SSL证书的那一刻浏览器要求我们转换WS调用WSS://。通过这样做到达服务器端口的第一条消息就是HTTP升级请求,现在昰服务器无法理解的一些加密消息!

任何想法为什么服务器虚拟机是没有得到一个HTTP升级请求?

  1. 安装在VM中的端口45001的证书没有运气。不知噵虚拟机甚至不知道如何使用此证书解密
  2. 在本地运行服务器并让浏览器通过wss连接。服务器仍然有奇怪的加密消息在当地environnment,在什么基础仩呢

真的很感激如果有人可以提供帮助。!

此篇文章主要分享的是websocket多服务器存储session信息在网上经常看到有websocket多服务器的例子,此篇文章只是将websocket多服务器中的session提取并存储起来便于用户之间的互动与查找,其实就是解耦合

* 获取当前房间用户总体 * 添加用户进入房间并是否创建房间

上述步骤主要将处理消息和session分离开唯一要注意的是移动端的websocket多服务器在退絀时服务端可能接收不到,一定要注意将session清空否则session会越寸越大导致内存溢出

* 发送消息给用户端的人 //添加返回的json格式的字符串 * 发送消息(每個用户有自己的发送消息锁)
    //服务器可能判断isopen不准,简化步骤不采用,遇到问题直接结束websocket多服务器链接
 //由于客户端断开服务器监听不到茬客户端简历重连机制,发送失败即断开
 
此为分离websocket多服务器的session的实现有些代码涉及到了业务,进行了删除理解了整体思路即可。这样独立出了session信息,在服务器层遇到接口只要能获取存储session的key值便可发送消息,实现主动发送消息给客户端

我要回帖

更多关于 websocket多服务器 的文章

 

随机推荐