Tag: iisnode

客户端没有通过IIS节点从SocketIO接收事件

我有一个Web应用程序正在与通过IIS节点托pipe的NodeJS服务器进行套接字连接。 连接似乎是正确的,因为我解决了我最初有客户端上的404轮询错误。 但是现在,它看起来像客户端没有从IIS节点接收套接字事件。 我的理论是,因为IIS节点的行为像一个代理,事件发回到客户端在IIS节点级停止。 exports.register = function(socket) { User.schema.post('save', function (doc) { console.log("Save socket"); onSave(socket, doc); }); } function onSave(socket, doc, cb) { socket.emit('User List Update', doc); } 在Node中,上述事件触发,但在前端没有收到。 客户端看起来像这样: var socket = io.connect("http://myinternallyhostedserver:7777/reception"); socket.on('User List Update', function () { console.log('Received socket event!'); if (vm.enableAlert) { vm.alertSound.play(); } vm.getUsers(); }); 我的web.config文件如下所示: <configuration> <appSettings> <add key="virtualDirPath" […]

错误:EPERM,Node.js和Etherpad Lite不允许的操作

我试图让我的计算机上运行IIS的Etherpad精简版网站,然后将其上传到Azure Web站点,但是当我尝试( http://pastebin.com/4rZWbqix )时出现此错误: iisnode处理请求时遇到错误。 HRESULT:0x2 HTTP状态:500 HTTP原因:内部服务器错误 您正在接收此HTTP 200响应,因为system.webServer/iisnode/@devErrorsEnabledconfiguration设置为“true”。 除了node.exe进程的stdout和stderr的日志之外,还可以考虑使用debugging和ETW跟踪来进一步诊断问题。 node.exe进程生成的stdout和stderr输出的最后64k如下所示:fs.js:520 return binding.lstat(pathModule._makeLong(path)); ^ Error: EPERM, operation not permitted 'C:\Users\Matthew' at Object.fs.lstatSync (fs.js:520:18) at Object.realpathSync (fs.js:1047:21) at tryFile (module.js:142:15) at Function.Module._findPath (module.js:181:18) at Function.Module._resolveFilename (module.js:336:25) at Function.Module._load (module.js:280:25) at Module.runMain (module.js:492:10) at process.startup.processNextTick.process._tickCallback (node.js:244:9) 在Etherpad的目录中没有fs.js文件,所以我认为它是Node.js的一部分有问题。 我是新的Node.js,所以任何帮助,将不胜感激。 编辑1:我目前正在寻找Azure的替代品,并授予C:\ Users \ Matthew的权限。 但是,有可能以某种方式修改fs.js,把一个try / catch围绕binding.lstat? 编辑2:玩了一下之后(添加权限工作!),我已经得到它的工作。 […]

Node.js本地模块不是有效的Win32应用程序错误

试图为node.js制作Hello World本地模块 在VS 2012中有一个文件的Win32项目: #include <node.h> #include <v8.h> using namespace v8; Handle<Value> Method(const Arguments& args) { HandleScope scope; return scope.Close(String::New("world")); } void init(Handle<Object> target) { target->Set(String::NewSymbol("hello"), FunctionTemplate::New(Method)->GetFunction()); } NODE_MODULE(hello, init) 这个编译成hello.node。 选项: – dynamic库(.dll) – 没有公共语言运行时支持 像这样使用它: hello = require './hello' console.log hello.hello() 它在本地机器上运行(win8 x64,节点:0.8.12) 但是,在远程服务器(Windows Server 2008 x64,节点:0.8.12,iisnode:0.1.21 x64,iis7),它会引发此错误: 应用程序已经抛出一个未捕获的exception,并终止:错误: %1不是有效的Win32应用程序。 C:\的Inetpub \testing\ LIB […]

如何实现Socket.IO与ASP.Net,IISNode,Node.JS和SQL Server的基于事件的推送通知?

对于通知项目,想推送事件通知。 这些都是login,更改个人资料等,并显示给适当的客户。 我想讨论一下把它放在一起的一些想法,并就最好的方法得到一些build议。 我在这里注意到,对CouchDB所做的更改可以通过由Node拾取的_changesstream来检测,并且一个进程将启动。 我想实现这样的事情(我正在使用SQL Server,但是在这个级别的入口可能不是最好的解决scheme)。 我没有遵循CouchDB的例子(检测基于数据库的事件,我认为这只是复杂的事情,因为我们感兴趣的是客户端事件),我认为,当一个事件发生,如用户login,然后发送一条消息给节点服务器一些事件细节(RESTful请求?)。 然后处理该消息并将其广播给所有连接的客户端; 适当的客户端显示通知。 build议的生态系统: .Net 4.0 IIS IISNode Socket.IO Node.js的 SQL Server 2008 这将build立在使用.Net框架(IIS等)的现有项目之上。 许多客户的浏览器不支持networking套接字,所以使用Socket.IO是一个不错的select(后备支持)。 但是,从我所看到的 ,Socket.IO只支持通过IISNode长轮询(这不是一个真正的问题)。 一个选项是将Socket.IO/Node端点公开给所有客户端,以便基于客户端的通知可以通过JS发送到广播消息的节点服务器。 (遵循基本的聊天服务器/客户端/服务器示例)。 或者,可以使用IIS端点,但只能支持长轮询(通过Socket.IO)。 这将提供一些附加的.Net后端处理,但可能会使架构过于复杂。 是否有基于SQL Server的事件通知可用于节点? 什么是最好的方法? 如果我没有得到术语生态系统configuration权,请澄清。 谢谢。

IIS,Node.js和Web应用程序与IISNode没有configuration正确的虚拟目录

我在IIS中有以下设置: 默认网站(www.foo.com)托pipe标准的html网站 运行IIS节点的默认网站(www.foo.com/bar)下的Web应用程序 节点项目正在使用快递 我不能为了我的生活得到这个东西configuration正确,所以当我打networking应用程序是正确地提供节点应用程序。 我认为我的问题在于web.config。 任何人都可以帮我写一个正确的web.config来正确地工作? 我的configuration的当前版本将服务于我的节点响应,说它无法获取我input的任何url的资源。 这是我的configuration的当前版本: <configuration> <system.webServer> <handlers> <add name="iisnode" path="app.js" verb="*" modules="iisnode" /> </handlers> <rewrite> <rules> <rule name="bar"> <match url="bar/*" /> <action type="Rewrite" url="app.js" /> </rule> </rules> </rewrite> </system.webServer> </configuration>

如何为Web应用程序运行Node.JS服务器?

信息:我对node.JS非常陌生! 我已经写了一个示例服务器,可以监听端口XXXX上的http请求。 当我从命令行(Windows)运行这个服务器,似乎工作得很好。 它响应在浏览器中打开的对localhost:XXXX的请求。 问:这是应该如何工作? 对于要运行的节点服务器,是否应该始终打开一个CMD提示符让服务器监听请求? 我可以不用IISNode做什么吗? 我明白,如果我向JS文件发出请求,在IISNode中logging为一个Node.JS文件,并且该NODE应该处理它; 那么我将有节点处理我的请求。 但是,这假定IIS是我的Web服务器,并且可以由Node处理特定的请求。 我希望我在这里有道理! 🙂

Windows Azure网站正在覆盖我的node.js应用程序中的404和500错误页面

我正在使用Windows Azure网站托pipenode.js应用程序。 到目前为止,除了我的自定义错误,一切都很好。 在我的节点应用程序中,我有一个error handling程序,可以在我的本地机器上呈现自定义404和自定义500错误页面。 但是,只要我发布到azure它将覆盖响应时,我将statusCode设置为除200以外的任何内容。 如果我没有将500或404状态码传递给响应,则不会发生这种情况,但是我希望状态码能够传递给浏览器。 本地我得到我的自定义错误页面就好了: 但是,在azure色的网站上,它只返回一行文字: 页面无法显示,因为发生了内部服务器错误。 我试图创build自己的web.config来覆盖默认的自定义错误禁用,但似乎没有任何效果。 这是我的web.config: <?xml version="1.0" encoding="utf-8"?> <configuration> <system.web> <customErrors mode="off" /> </system.web> <system.webServer> <handlers> <add name="iisnode" path="app.js" verb="*" modules="iisnode"/> </handlers> <rewrite> <rules> <rule name="StaticContent"> <action type="Rewrite" url="public{REQUEST_URI}"/> </rule> <rule name="DynamicContent"> <conditions> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/> </conditions> <action type="Rewrite" url="app.js"/> </rule> </rules> </rewrite> <iisnode debuggingEnabled="true" devErrorsEnabled="true" debuggerPathSegment="debug" […]