我正在尝试创建一个
HTML5 / JS应用程序,并为我的后端使用Azure移动服务.
基于ScottGu’s post,他演示了源代码控制和npm模块支持,我想知道是否可以使用socket.io来启用实时通知和WebSockets的使用.
我可以看到一个人如何能够引入模块并为每个特定请求使用它(例如,当客户端发送到资源时,添加一个钩子来向所有客户端广播资源的创建)但我不确定如何设置并共享socket.io对象.
NB.我知道iOS,Windows和Google基于推送通知的内置支持,但它(尚未)为基于Web的项目提供现成的解决方案 – 因此想要使用socket.io(或任何SignalR-esque等价物).
解决方法
WebSocket在Azure移动服务上应该没问题,因为它只是将HTTP连接“降级”回到带有成帧的Socket(更像是可靠的UDP).但是有一些警告:
>如果您使用的是Socket.IO,则浏览器/代理不支持WebSocket将默认回退到XHR.但是XHR上的Socket.IO需要大量的URL端点,并且在Azure移动服务上会失败. Socket.IO协议规范的详细信息在https://github.com/learnboost/socket.io-spec
>您需要使用Redis(redis.io)来支持Socket.IO上的服务器场,这需要Linux机箱.他们目前只在Windows平台上进行实验性构建
我宁愿为Socket.IO服务器设置一组不同的机器,因此它不会在不支持WebSocket的浏览器/代理上失败.然后当有人在Azure移动服务上POST到API时,API会将消息排队到消息队列,并向所有Socket.IO服务器发出信号以广播该消息.