Node.jsの新機能。SOで多くの回答を検索しましたが、この問題の適切な解決策を見つけることができませんでした。memcachedサービス(phpを使用して保存)からデータを取得するためにnode.jsのカスタムmemcacheサーバーコードを使用しています。以下に関連するコードのみを追加しました。
var net = require("net");
net.createServer(function(socket) {
socket.setEncoding('utf8');
var cmd = {};
var incoming = '';
socket.addListener('receive', function(data) {
incoming += data;
// in the mid of receiving some data, so we can't
// parse it yet.
if(data.substring(data.length - 2) != '\r\n')
return;
data = incoming;
incoming = '';
var parts = data.split(/ /);
if(parts[0].match(/^(add|set|delete|get|gets)$/i)) {
switch(parts[0]) {
case 'add':
var message = JSON.parse(data.split('\r\n')[1]);
self._add.call(socket, parts[1].replace('\r\n', ''), message);
break;
case 'set':
var message = data.split('\r\n')[1];
try {
message = JSON.parse(message);
} catch(e) {}
var subparts = parts[1].replace('\r\n', '').split('/');
self._set.call(socket, subparts.slice(0, 2), subparts.slice(2).join('/'), message);
break;
case 'delete':
self._delete.call(socket, parts[1].replace('\r\n', ''));
break;
case 'get':
self._get.call(socket, parts[1].replace('\r\n', ''));
break;
case 'gets':
var getsparts = parts.slice(1);
getsparts[getsparts.length - 1] =
getsparts[getsparts.length - 1].replace('\r\n', '');
self._gets.call(socket, getsparts);
break;
}
}
});
}).listen(11211, "localhost");
しかし、ノードサーバーを起動しようとするとEADDRINUSE
、memcachedサービスがすでにポートで実行されていることが原因であると表示されます11211
。ポートを(51242)などの他の何かに変更すると、エラーは表示されませんが、memcachedからデータが取得されません。
11211
したがって、このnode.js memcacheサーバーコードから同じポートを使用してmemcachedサービスに接続する方法はありますか?私はNode.jsを初めて使用するため、考えられる解決策を見つけることができませんでした。したがって、 node.js memcachedモジュールを使用せずにこの問題を修正するにはどうすればよいですか、または完全に間違ったパスにいますか?補足として、私はWindows7でmemcachedサービスとnodejsを実行しています。提案してください
アップデート
それ以外の
net.createServer(function(socket) {
テストのためにフォローに変更しました
this.start = function() {
var socket = net.createConnection(11211, "127.0.0.1");
console.log('Socket created.');
socket.on('data', function(data) {
console.log('RESPONSE: ' + data);
}).on('connect', function() {
socket.write("GET / HTTP/1.0\r\n\r\n");
}).on('end', function() {
console.log('DONE');
});
}
しかし、コンソールでは、Socket Createdが表示され、エラーがスローされます:: Error connectECONNREFUSED