2

ですから、私はCにかなり慣れておらず、単純なNodeNative拡張機能に取り組んでいます。

これが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:

メソッドを2回呼び出しているように見えるのはなぜですか?答えは明らかだと思いますが、わかりません。

4

1 に答える 1

2

これは一種の重複です。これは拡張機能のバグではなく、HTTPコードの問題です。

見る:

基本的に、ブラウザは2つのURLを要求して/おり/favicon.ico、URLをチェックしていないため、両方の要求で拡張コードを実行します。

于 2012-04-15T17:55:41.423 に答える