dgram obj에 대한 이벤트에 할당하려는 함수가있는 클래스가 있습니다.
MessageServer.prototype.OnBind = function (datagram) {
var address = datagram.address();
console.log("server listening " + address.address + ":" + address.port);
};
datagram.on("listening",
function() {
OnBind(this);
});
난 노력 했어:
나는 이것이 간단하다고 생각하고 난 단지 어렵다 ... 어떻게 그 이벤트 핸들러에 함수를 할당합니까?
편집-전체 모듈
var Dgram = require("dgram");
var MessageQueue = require("./MessageQueue");
var Message = require("./Message");
function MessageServer(name, listenPort, messageQueue, bindCallBack, messageReceiveCallBack,closeCallback,errorCallback) {
this.Name = name;
this.MessageQueue = messageQueue;
this.Port = listenPort;
var datagram = Dgram.createSocket("udp4");
MessageServer.prototype.Bind = function() {
datagram.bind(this.Port);
};
MessageServer.prototype.OnReceive = function(message, info) {
var msg = new Message(message, info.address, info.port);
MessageQueue.Add(msg);
};
MessageServer.prototype.OnBind = function (datagram) {
var address = datagram.address();
console.log("server listening " + address.address + ":" + address.port);
};
datagram.on("listening",this.OnBind(datagram));
datagram.on("message",
function(msg,info) {
OnReceive(msg, info);
});
datagram.on("error", function(err) {
console.log(this.Name + " error: " + error);
});
datagram.on("close", function() {
console.log("server closing: " + Name);
});
}
module.exports = MessageServer;
코드와 관련된 몇 가지 문제, 문서를 참조로 사용하여 약간 정리했습니다.
여기를 참조하십시오 : https://nodejs.org/api/dgram.html
커프에서 완전히 벗어 났고 코스에서 테스트되지 않았습니다. 하지만 어디서부터 시작해야할지 알 수있을 것입니다.
MessageServer
여기에 클래스입니다, 그것의 메서드에서 논리를 구현하십시오. 그런 다음 인스턴스화하고 호출 Bind
하여 시작하십시오.
(아마이 인터페이스를 개선 할 여지가있을 것입니다.)
var myMessageServer = new MessageServer('MyServer', 8888, new MessageQueue(), etc...);
myMessageServer.Bind();
-
var Dgram = require("dgram");
var Message = require("./Message");
function MessageServer(name, listenPort, messageQueue, bindCallBack, messageReceiveCallBack, closeCallback, errorCallback) {
this.name = name;
this.messageQueue = messageQueue;
this.port = listenPort;
this.server = Dgram.createSocket("udp4");
this.server.on("listening", this.OnBind.bind(this));
this.server.on("message", this.OnReceive.bind(this));
this.server.on("error", function (err) {
console.log(this.name + " error: " + error);
this.server.close();
}.bind(this));
this.server.on("close", function () {
console.log("server closing: " + name);
});
}
MessageServer.prototype.Bind = function () {
this.server.bind(this.port);
};
MessageServer.prototype.OnReceive = function (message, info) {
var msg = new Message(message, info.address, info.port);
this.messageQueue.Add(msg);
};
MessageServer.prototype.OnBind = function () {
var address = this.server.address();
console.log("server listening " + address.address + ":" + address.port);
};
module.exports = MessageServer;
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다