2

所以我对 C 语言相当陌生,并且正在开发一个简单的 Node Native 扩展。

这是我的扩展名为 helloworld.c 的代码

Handle<Value> Method(const Arguments& args) {
  printf(":%s:\n", "Calling Method");
  //SendByte(bdrate,'1');
  HandleScope scope;
  if(toggleLight()==0){
    printf(":%s:\n", "Turning On");
    return scope.Close(String::New("Turned On"));
  }
  else{
printf(":%s:\n", "Turning Off");
return scope.Close(String::New("Turned Off"));
  }
}

void init(Handle<Object> target) {
  printf(":%s:\n", "Init");
  target->Set(String::NewSymbol("hello"),
      FunctionTemplate::New(Method)->GetFunction());
}
NODE_MODULE(helloworld, init)

我通过以下 Node.js 类使用前一个...

var addon = require('./build/Release/helloworld');

var http = require("http");

http.createServer(function(request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.write(addon.hello());
  response.end();
}).listen(8888);

当我调用该站点时,我在终端中看到以下内容

~/Desktop/hellonode$ node testnode
:Init:
:Calling Method:
:Turning Off:
:Calling Method:
:Turning On:

为什么它似乎调用了两次该方法?我确信答案很明显,但我看不到。

4

1 回答 1

2

这有点重复。这不是您的扩展程序中的错误,而是您的 HTTP 代码中的问题。

看:

基本上,您的浏览器正在请求两个 url//favicon.ico,并且由于您没有检查 URL,它会在两个请求上运行您的扩展代码。

于 2012-04-15T17:55:41.423 回答