Socket.io在本地运行良好,但在Azure上找不到

时间:2014-01-20 20:27:28

标签: node.js azure socket.io

我是Node.js的新手,并试图为自己构建一个应用程序。我正在使用socket.io,它在测试期间在本地工作得非常好,但是当我部署到Azure时,我一直在

http://domain/socket.io/socket.io.js 404 (Not Found)

我尝试过在论坛上找到的大多数方法和修复程序,但似乎没有任何工作,Azure上启用了Web套接字。

我的代码如下:

客户端

<script src="/socket.io/socket.io.js"></script>

服务器端

var express = require('express');
var port = process.env.port || 1337;
var app = require('express')()
  , server = require('http').createServer(app)
  , io = require('socket.io').listen(server, { log: false });

server.listen(port);

非常感谢任何帮助,提前谢谢。

4 个答案:

答案 0 :(得分:2)

你是如何包含模块的?

最简单的方法是创建一个package.json文件(npm init),然后将其包含在app.js旁边。

请参阅http://www.windowsazure.com/en-us/documentation/articles/nodejs-use-node-modules-windows-azure-apps/

答案 1 :(得分:1)

要使其正常工作,请尝试配置socket.io客户端和服务器以强制执行xhr-polling传输。默认情况下,socket.io首先尝试websockets,并且它们需要为在iisnode下运行的Node.js应用程序进行一些自定义配置(例如在Windows Azure网站中)。

在Windows Azure网站中使用WebSockets运行socket.io应用程序需要一些特殊配置:http://tomasz.janczuk.org/2013/01/hosting-socketio-websocket-apps-in-iis.html

有关代码示例,请参阅https://github.com/tjanczuk/dante

答案 2 :(得分:0)

Windows Azure有三种不同的计算方法,您可以在其中部署此应用程序,是否可以澄清您要部署到哪个?云服务,虚拟机或网站。

另外,你可以发布你的web.config文件吗?

答案 3 :(得分:0)

为了使它在azure网站上运行,如果你在azure上启用了websockets,我到目前为止唯一能解决的问题就是添加一个web.config来添加:

<webSocket enabled="false" />