2

我正在尝试使用 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 时指定一个端口号。你们中的任何人都可以指出我正确的方向吗?谢谢!

4

2 回答 2

4

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

这是关于在 Windows Azure Web 和 Worker 角色上运行 socket.io的示例

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

于 2012-06-14T23:25:11.600 回答
1

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

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

于 2012-06-14T22:58:33.723 回答