Tag: c#

在客户端加载本地插件

是否有可能从客户端JavaScript使用requireJS或其他模块加载本机插件(用C / C + +编写,如nodejs)? 我正在写一个nodejs + express应用程序,它提供一个加载javascript文件的html文件。 我正在使用requireJS并将这些客户端js文件编译到AMD模块中。 我可以从nodejs服务器端的js脚本加载和调用本地方法,并想知道是否有可能从客户端js脚本做同样的事情。

试图在网站上获取歌曲列表不起作用

我试图在节点和webBrowser控制中使用phantomjs,cheerio,并获得我的歌曲列表,我可以成功的HTML,但没有歌曲列表,我不明白为什么我不能得到它… 我能做的唯一方法是复制开发工具的HTML和JQuery分析。 这是我在WinForm中的代码: private void Form1_Load(object sender, EventArgs e) { webBrowser1.Navigate("http://grooveshark.com/#!/shinningstar1001/collection"); webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted; } void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { File.WriteAllText("D://test.txt", webBrowser1.DocumentText); } 在Cheerio: var cheerio = require('cheerio'); var request = require('request'); var url = 'http://grooveshark.com/#!/shinningstar1001/collection'; request({ url: url, headers: {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'} }, function […]

将string参数从node.js传递给C ++代码(使用SWIG)

我想调用一个用Javascript代码传递string参数的C ++编写的方法。 我find的解决scheme是使用Node.js和SWIG来生成绑定。 我遵循这里的例子(请参阅enobayram post): 如何使用node.js中的C ++库? C ++方法如下所示: Handle<Value> CMyClass::Open(const v8::Arguments& args) { HandleScope scope; std::string port(*v8::String::Utf8Value(args[0])); std::cout << port << std::endl; return scope.Close(Undefined()); } 从Node.js控制台: var toto = require("./build/Release/MyClass") var c = new toto.CMyClass() c.Open("test") Error: in method 'CMyClass_Open', argument 2 of type 'v8::Arguments const &' at repl:1:4 at REPLServer.self.eval (repl.js:110:21) at Interface.<anonymous> […]

node-gyp平台特定的插件

是否有可能指定某个本地插件只是为了构build某个平台(例如: win32 )? 目前我有一个使用Windows API的C ++插件,但是node-gyp尝试为基于UNIX的系统构build它。 我一直在searchnode-gyp文档和NodeJS C / C ++插件文档部分,没有任何运气。

在“callback”函数中无法访问V8上下文

我正在写一个NodeJS插件,我使用了一个C库,可以让你在某些事件中注册一个callback函数。 当callback被触发时,我想调用一个NodeJScallback函数。 问题是,在我的Ccallback函数中,当尝试执行与V8相关的任何操作时(例如创buildHandleScope),我会遇到分段错误。 在test.js中: … myaddon.register(function(data) { console.log("data: " + JSON.stringify(data)); }); … 在test.c中: #include <stdlib.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <node.h> #include <v8.h> using namespace v8; void WINAPI myEvent(int num, void * context) { HandleScope scope; // Segmentation fault here! Local<Function> * cb = (Local<Function>*)(context); Local<Object> obj = Object::New(); obj->Set(String::NewSymbol("id"), Number::New(num)); const […]

NodeJS c ++插件性能

使用NodeJS 0.11,可以添加自定义的c ++代码,使用V8进行编译并将其作为模块。 当在c ++插件中做很多math计算时,会比“本地”JavaScript快多less?

检测当前线程是否是libuv默认事件循环的主线程

我正在为Node.js编写一段C代码,并且想要区分asynchronous调用和同步调用。 换句话说,我想要检测我的代码是否在主事件循环中调用的V8事件分派线程上运行,或者是否从某个单独的工作线程调用它。 在前一种情况下,我可以立即调用JavaScript,而在后者中,我必须使用更复杂的asynchronouscallback。 libuv线程API提供了uv_thread_self来标识当前线程,而uv_thread_equal提供了相等的线程比较。 所以我需要find主事件循环的uv_thread_t 。

创build第一个node.js插件

我正在关注文档以创build一个node.js插件。 我跑了 node-gyp configure build –python C:\Python27 并收到错误 错误:产生ENOENT 全栈: gyp info it worked if it ends with ok gyp info using node-gyp@1.0.3 gyp info using node@0.10.29 | win32 | x64 gyp ERR! configure error gyp ERR! stack Error: spawn ENOENT gyp ERR! stack at errnoException (child_process.js:1000:11) gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:791:34) gyp ERR! […]

在使用NAN的Node.js的C ++模块中不调用SetAccessor函数

我正在尝试使用C ++为Node.js创build一个模块。 我得到了模块设置和工作,Node.js看到模块没有问题。 它可以被初始化和去初始化,并且所有的代码似乎都处于工作状态。 不过,我试图用C ++来声明getter和setter来在Node.js中访问,但是它们不能按预期工作。 我使用NAN,所以我试图使用这个代码作为指导: https : //github.com/rvagg/nan/blob/master/test/cpp/settergetter.cpp 下面是代码。 我相当新,所以我可以肯定地使用一点帮助。 非常感谢! node_opus.cc: namespace nodeopus { Persistent<Function> NodeOpus::constructor; NodeOpus::NodeOpus() : encoder( NULL ), // We have no encoder yet sampleRate( 48000 ), // Highest bitrate? channels( 2 ), // Stereo bitrate( 64000 ), // Default bitrate of 64k signal( OPUS_SIGNAL_MUSIC ), // Default of […]

ofstream不创build文件(Node.js插件)

我试图为Node.js创build一个插件 (其中包括)使用ofstream将内容写入我的C ++类中的文件。 std::ofstream license_file; std::string fileContent(*NanAsciiString(args[0])); license_file.open(PATH); //file doesn't yet exist, so create it if(!license_file) { printf("ERROR: %s (%s)\n", strerror(errno), PATH); } license_file << fileContent; license_file.close(); 如果PATH被设置为与我的Node.js代码(例如./license.txt )相同的目录,这工作正常。 但是,如果它位于其他地方,则不能打开/创build有问题的文件。 例如,使用~/license.txt不起作用(注意:我正在运行OSX)。 报告的错误总是No such file or directory – 即使我物理创build~/license.txt 。 任何想法,为什么这个工程在一个目录,但不是其他人? 如果这是一个权限问题,我会期待一个不同的错误信息。 为了logging,我已经看到关于“ofstream无法创build文件”的约20个其他SO问题,但将其他标志传递到open()没有任何效果。 我有一种感觉,这是与Node / V8内部运行有关。