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

时间:2014-02-20 20:33:39

标签: node.js azure socket.io azure-web-roles

我按照"Build a Node.js Chat Application..."帖子逐步显示如何使用Socket.io部署Node.js应用程序以提供实时聊天webapp。

唯一缺少的是展示如何横向扩展此应用程序,因为我发现在Windows Azure上扩展此类应用程序并不那么简单,因为Azure LB仅支持循环策略。

我确实找到socket.io-servicebus,它为pub / sub store的需要提供了一些解决方案。 但这还不够,因为Socket.io在握手阶段#952中有一个已知错误,这意味着如果没有粘性会话,握手阶段就无法工作。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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

回到云服务支持节点的第一个版本。我经常以worker角色而不是web角色运行node以避免iisnode。这是必要的,因为Windows Server 2008 R2根本不支持websockets。所以为了将socket.io与节点一起使用,这就是方法。现在Windows Server 2012已经可用,我们不再这样做了。

鉴于此,有osfamily 2(SessionAffinity)和osfamily 3(SessionAffinity4)的工具可以在工作者角色中启用粘性会话(显然不是Web角色)。这可以满足您的需求,代价是在部署和本地测试(如果您使用模拟器)方面更复杂一些。

我的客户端运行的是SignalR和运行在Windows Azure中的Service Bus Backplane。所以我可以验证那组选项。但我还没有运行SessionAffinity插件。

值得注意的是,Windows Azure网站默认使用ARR引入会话关联。只有当您不受某些原因限制云服务时才会这样。 (link

相关问题