在Windows Azure上使用Socket.io扩展Node.js

我跟着“构buildNode.js聊天应用程序…”的post,一步一步展示如何使用Socket.io部署Node.js应用程序,以提供实时聊天的web应用程序。

唯一缺less的是展示如何扩展这个应用程序,因为我发现在Windows Azure上缩放这样的应用程序并不是那么简单,因为Azure LB只支持轮循机制策略。

我find了socket.io-servicebus ,它为pub / sub存储的需求提供了一些解决scheme。 但是这还不够,因为Socket.io在握手阶段#952中有一个已知的错误,这意味着没有粘性会话握手阶段不能工作。

有任何想法吗?

免责声明:我没有试过这个。

回到云服务支持节点的第一个版本。 为了避免iisnode,我经常在工作者angular色而不是webangular色中运行节点。 这在当时是必需的,因为Windows Server 2008 R2根本不支持websocket。 所以为了在节点上使用socket.io,就是这个方法。 现在Windows Server 2012已经可用了,我们现在不再这样做了。

鉴于此,有两个工具可用于OSangular色2( SessionAffinity )和osfamily 3( SessionAffinity4 ),以启用辅助angular色(显式不是Webangular色)中的粘性会话。 这可以满足您的需要,但是要在部署和本地testing(如果使用模拟器)方面稍微复杂一些。

我的客户端运行SignalR和在Windows Azure中运行的服务总线背板。 所以我可以validation这一套选项。 但是我没有运行SessionAffinity插件。

还值得注意的是,Windows Azure WebSites默认使用ARR来引入会话关联。 只有当您不受云服务的约束时才会这样做。 ( 链接 )