Tag: c#

如何从对象输出中删除函数?

我正在学习构造函数模式 。 为了锻炼我正在学习的内容,我正在构build一个名为Book受到Mongoose API启发的内存模型: var assert = require("assert"); var Book = (function() { var books = []; var constructor = function(title, author, genre) { assert.ok(title, "title cannot be undefined"); assert.ok(author, "author cannot be undefined"); assert.ok(genre, "genre cannot be undefined"); this.title = title; this.author = author; this.genre = genre; this.save = function() { books.push(this); }; this.description […]

如何从node-gyp定位'imqi.hpp'

我正尝试使用“nan”模块从node.js调用MQ_CONNECT() 看到 Node.js和C / C ++的集成:如何正确实现callback? 和https://github.com/nodejs/nan 当我使用“node-gyp”时,它说它找不到“imqi.hpp”,即MQ头 据我所见,MQ的path必须在“binding.gyp”中提供,而我试过这个没有成功: { "targets": [ { "target_name": "mqconn", "sources": [ "initall.cc", "mqconn.cc" ], "include_dirs": [ "<!(node -e \"require('nan')\")", "c:\MQ\tools\cplus\include" ] } ] } anyboby有一个线索如何解决这个问题? 塞巴斯蒂安。 PD.-当然,该文件是path指示的地方: c:\>dir c:\MQ\tools\cplus\include\imqi.hpp Volume in drive C is OS Volume Serial Number is 12AA-0601 Directory of c:\MQ\tools\cplus\include 27/06/2013 02:00 1.538 imqi.hpp

从C#控制台应用程序中使用Edge.js

我正在尝试做一些看起来很简单的事情,但是我无法让它工作。 我已经通过nuget安装了Edge.js,我想从C#控制台应用程序中执行一段JavaScript。 从我的public static void main代码如下: Task.Run(async () => { Console.WriteLine( await Edge.Func("return function() { return 'hello world'; }")(null).Result ); }).Wait(); 我运行的应用程序,它所做的是挂起。 我试过这个: Console.WriteLine(Edge.Func("return function() { return 'hello'; }")(null).Result); 同样的结果。 这也是… var task = Edge.Func("return function() { return 'hello'; }")(null); await task; Console.WriteLine(task.Result); 同样的结果。 挂… 我也尝试了RunSynchronously()而不是等待,这给了我一个InvalidOperationException 。 我在这里跟着文档。 有任何想法吗?

C ++中的URL编码和nodejs中的解码

我正在将数据从C ++客户端传输到nodejs服务器。 我使用zlib首先压缩string,然后使用curl_easy_escape来对压缩的string进行url编码。 std::string s = zlib_compress(temp.str()); std::cout << s <<"\n"; CURL *handle = curl_easy_init(); char* o = curl_easy_escape(handle, s.data(), s.size()); std::cout << o <<"\n"; 然后我发送它使用: std::string bin(o); curl_easy_setopt(handle, CURLOPT_POSTFIELDSIZE, bin.size()); curl_easy_setopt(handle, CURLOPT_POSTFIELDS, bin.data()); curl_easy_perform(handle); 当我运行这个,我得到的输出: x??с??Ҵ4? x%DA%D3%D1%81%80%E2%92%D2%B44%1D%03%00%1BW%03%E5 现在,我收到了我的nodejs服务器上的第二个编码string。 我现在尝试解码它。 var x = req.params; for (var key in req.body) { console.log(key); var x = unescape(key); […]

使用tcp_nodelay发送大消息时出现奇怪的滞后

我正在写一个交stream程序,通过tcp连接发送一个bash shell的输出。 为了让我的程序更具响应性,我使用setsockopt()来启用TCP_NODELAY,它禁用了Nagle的缓冲algorithm。 这工作很好,除非很less有大消息滞后。 如在,如果消息超过大约500字节(可能是512)。 前500个字节会通过(快速地在小信息中),然后在1-2秒内延迟,其余的一次被接收。 这只发生一次,每10-15次收到一个大消息。 在服务器端,消息一次一个字节地写入套接字,并且所有的字节都可用,所以这种行为对我来说是意想不到的。 我最好的猜测是,有一个512字节的缓冲区在sockets的某个地方导致一个块? 我做了一些时间testing,看看滞后在哪里,我非常确定这是发生滞后的套接字本身。 服务器端的所有数据都是无阻塞地写入的,但客户端收到滞后后的消息结束。 但是我使用getsockopt()来查找套接字的接收和发送缓冲区,它们分别大于512字节 – 66000和130000。 在客户端,我使用express js来接收处理程序中的数据(app.on('data',function(){}))。 但是我读到这个expression函数不会缓冲数据? 有人会猜测为什么会发生这种情况吗? 谢谢!

发出由xml-crypto节点模块生成的validationxml签名

我正在实施一个SAML 2.0 node.js身份提供程序。 作为一个概念的certificate,我想表明,这个服务对一个.net消费者或服务提供者是可用的。 我正在使用node-samlp库。 我遇到的问题是xml SAMLResponse是由npm包签名的,我正在尝试使用.net web应用程序validationxml签名。 validation失败… 这里是我写的为服务身份提供者一块的JavaScript: function postSuccess(req,res,next,userId){ return ms.call('ms.ip.claims.getClaims').then(function(claims){ return samlp.auth({ cert: fs.readFileSync('c:\\temp\\test.pem').toString(), key: fs.readFileSync('c:\\temp\\test.key').toString(), signatureAlgorithm: 'rsa-sha1', digestAlgorithm:'sha1', getPostURL: function(wtrealm,wreply,req,callback){ callback(null,req.samlRequest.AssertionConsumerServiceURL); }, profileMapper: profileMapper, issuer: '<my-company>' })(req,res,next); }); } 这会生成SAMLResponse并将其成功发回到我的.net Web应用程序,但是当我试图validationxml文件的签名时,我遇到了问题。 以下是.net端的validation码: public bool IsValid(XmlDocument xmlDoc) { var cert = new X509Certificate2(); cert.Import("c:\\temp\\test.pfx", "password", X509KeyStorageFlags.DefaultKeySet); var manager = new XmlNamespaceManager(xmlDoc.NameTable); […]

使用非ASCII字符从wchar_t创buildv8 :: String的安全方法是什么?

我正在为DAB开发板编写Node.js前端,后者最终将运行在Raspberry Pi上。 我是一个Java和Web开发人员,我正在努力与C ++和不同types的string之间转换。 DAB板带有一个C ++ SDK,有许多方便的function。 它允许我用GetTotalProgram()获得可用程序的数量。 对于每个程序,我可以调用GetProgramName来获取程序的名称: GetProgramName(char mode, long dabIndex, char namemode, wchar_t * programName) … mode意味着FM或DAB , namemode意味着长名或短名。 该程序的名称将在programName中返回。 为了将wchar_t *programName转换为v8::String ,我find了我正在使用的这个片段,并且理解了以下基本知识: wchar_t buff[300]; char cbuff[600]; GetProgramName(0, i, 1, buff); wcstombs( cbuff, buff, wcslen(buff) ); Local<String> str = String::NewFromUtf8(isolate, (const char *) cbuff, v8::String::kNormalString, wcslen(buff)); 我遍历可用的程序,并build立一个v8::Array : void GetPrograms(const FunctionCallbackInfo<Value>& args) […]

Node.js服务器向Windows C#客户端发出命令

我有一个项目,最初是作为一个简单的客户端服务器架构计划在HTTP上,用Node.js编写的服务器,客户端是用C#编写的.NET Windows应用程序。 客户应该对Windows C#应用程序进行控制,而后者又会向服务器发送一些数据请求。 现在我正考虑将应用程序的所有控件移动到服务器上,以便.NET应用程序具有最小的UI,并完全通过服务器上的Web UI进行控制。 在这种情况下,客户login到Web应用程序,单击button,服务器将命令和数据发送到Windows上的C#应用​​程序。 当然,如果我通过HTTP来完成这个问题,在客户端的适当configuration方面就会变得一团糟:防火墙规则必须允许从Internet连接到客户计算机,NAT必须得到处理。 有没有办法在客户端避免这些问题? 例如,通过从客户端发起连接(一旦客户端软件启动),然后不断打开接收来自服务器的命令?

我如何将一个更快的语言与Express.js后端集成?

一些背景:我目前正在一个运行在Azure服务器上的网站上工作。 这本质上是一个奇怪的MEAN堆栈,因为MongoDB部分被Azure的原生NoSql数据库DocumentDB取代。 网站的输出需要大量的常量数据处理,随着网站的增长,JavaScript被certificate是太慢了。 所以, 如果我使用node-gyp将C ++编译为Javascript ,那么代码最终是否以Javascript运行,并且会降低使用C ++的速度优势? Java是一个可行的select作为计算主力吗? 这是计算速度,内存使用情况,并与Javascript沟通。 一些额外的信息: 该网站不断从铬插件提取信息,并将其送入数字计算器。 正在评估的值包括浮点数,整数,string和布尔值,并且来自DB和运行值以及写入数据库。 PS请不要build议C#而不是Java。 我知道它已经被很好地整合到了Azure中,但我没有使用它,现在也没有时间去学习。 编辑:问一个更好的问题。

我可以将Node.js C ++扩展与Node的内部OpenSSL实现链接起来吗?

我有一个用C ++编写的需要链接到OpenSSL的节点扩展。 我也看到Node有一个使用OpenSSL实现的TLS模块 。 我可以在我的binding.gyp文件中将我的扩展连接到OpenSSL的Node副本吗?