【问题标题】:Websocket server on Azure with node.jsAzure 上带有 node.js 的 Websocket 服务器
【发布时间】:2012-06-15 07:25:11
【问题描述】:

我正在尝试使用 Node.js 创建一个 websocket 服务器以在 Windows Azure 上运行。这应该很简单,但我遇到了无法在任何地方找到解决方案的问题。

这是我的服务器端代码:

var ws = require('websocket.io')
    , http = require('http').createServer().listen(process.env.PORT)
    , server = ws.attach(http)

server.on('connection', function (socket) {
    socket.on('message', function () { });
    socket.on('close', function () { });
});

我如何知道我需要连接到哪个端口? 我的客户代码是:

var ws = new WebSocket("ws://socketiopuge.azurewebsites.net");

ws.onopen = function () {
    alert("opened");
};

ws.onmessage = function(msg) {
    alert(msg);
};

ws.onclose = function () {
    alert("closed");
};

当我运行代码时,我得到一个 501 错误代码,并且触发了 onclode 事件。我相信问题是我需要在创建 WebSocket 时指定一个端口号。你们中的任何人都可以指出我正确的方向吗?谢谢!

【问题讨论】:

    标签: javascript node.js azure websocket


    【解决方案1】:

    关于您的问题“我如何知道我需要连接到哪个端口”,您需要创建一个输入端点并为其设置正确的端口。配置完成后,您将在代码中使用相同的端口进行绑定和使用。

    这里是一个关于Running socket.io on Windows Azure Web and Worker roles的例子

    如果您在 Windows Azure Web 角色中托管 socket.io,请禁用服务器上的 WebSockets 传输,因为 Windows Azure Web 角色在 IIS7 上运行,IIS7 尚不支持 Web 套接字。有了Worker Role,你就不用担心了,可以直接使用Web Sockets。

    【讨论】:

    • 我假设负载均衡器规则仍然适用,所以休眠的 websocket 会每 60 秒被取消一次,除非它以某种方式 ping?
    • 我在断开 websocket 连接时遇到问题 - 60 秒超时仍然适用吗?
    【解决方案2】:

    如果您使用的是新的 Azure 网站,它们尚不支持 websocket。通过 IIS 托管的所有网站也是如此 - 无论是否为 node.js。

    您目前在 Azure 中支持 websocket 的唯一方法是使用辅助角色并提供您自己的 node.js 可执行文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-13
      • 1970-01-01
      • 1970-01-01
      • 2014-04-07
      • 1970-01-01
      • 2016-07-05
      • 1970-01-01
      • 2011-11-05
      相关资源
      最近更新 更多