带有IIS节点的nodejs socket.io

时间:2011-11-05 09:46:17

标签: iis node.js socket.io iisnode

我在使用iis节点的windows vista / IIS 7中尝试过node.js。我的想法是在asp .net mvc应用程序上使用服务器脚本连接到另一个套接字服务器并以持久方式提供请求。

我为IIS 7下载了https://github.com/tjanczuk/iisnode的iisnode版本,并且能够使用web.config和IIS模块配置中的http处理程序映射运行基本的“hello world”http服务器管道。

我正在尝试使用node.js中的socket.io库。如果我编写服务器和客户端,这可以独立工作。但与IIS节点一起使用时失败。

我有进一步下降的问题。像

这样的问题
  • 如何在asp .net mvc项目中包含npm模块?我试过了 将node_modules放在节点脚本的文件夹中,但确实如此 没有帮助。基本上require('socket.io')命令有效,但是 套接字连接等,简单地失败了。
  • 如何设置套接字 来自客户端的连接,将继续监听更新 服务器(如COMET) - 正如我所说,我正在尝试使用socket.io

以前有人试过吗?

3 个答案:

答案 0 :(得分:1)

回读a few months ago,IIS下的Socket.IO不支持WebSocket支持,但长轮询是。

这是几个月前的事了,现在我正在遇到同样的问题并试图解决。

Tomasz写道:

  

请注意,iisnode不支持websocket传输,但是   使用socket.io仍然可以使用其他基于HTTP的传输   像HTTP长轮询:

io.configure(function() {
    io.set('transports', ['xhr-polling']);
});

By the looks of it,截至2012年2月23日,此功能仍未受支持。

您需要通过IIS吗?您是否可以选择使用纯Socket.IO/Node选项,从而消除IISNode?如果你需要具有回退功能的完整WebSocket支持,这看起来是唯一的选择,除非有其他建议吗?

答案 1 :(得分:0)

这可能与您的问题有关,也可能与您无关。我没有对socket.io做过多少工作,但是我正在计划做一些与你所描述的非常类似的事情。在阅读iisnode的源代码时,我在cnodehttpmodule.cpp中找到了以下代码:

this->applicationManager->GetEventProvider()->Log(L"iisnode received a new http request", WINEVENT_LEVEL_INFO);

// reject websocket connections since iisnode does not support them
// http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-17#page-17

PCSTR upgrade = pHttpContext->GetRequest()->GetHeader(HttpHeaderUpgrade, NULL);
ErrorIf(upgrade && 0 == strcmp("websocket", upgrade), ERROR_NOT_SUPPORTED); 

在我看来,如果请求的标题中包含“websocket”,它将被拒绝。我需要阅读websocket协议,以便更好地理解这意味着什么。

我是第一个承认我不太清楚websockets与长期运行请求有何不同的人。但是,据我所知,socket.io将适用于不支持websockets的旧浏览器。

我建议您尝试将传输设置为xhr-polling或jsonp-polling。它有点击败了使用node.js的很酷的因素,但它可能有助于你解决问题。

答案 2 :(得分:0)

如果您的socket.io Web应用程序托管在IIS虚拟目录中,则与自托管案例相比,必须修改socket.io配置。有关详细信息,请参阅http://tomasz.janczuk.org/2013/01/hosting-socketio-websocket-apps-in-iis.html

此外,从版本0.2.x开始,iisnode支持Windows 8和带有IIS 8的Windows Server 2012上的WebSockets。有关详细信息,请查看http://tomasz.janczuk.org/2012/11/how-to-use-websockets-with-nodejs-apps.html