2015-03-18 2 views
0

Я создал один сервер и клиент. Это прекрасно работает. Но я должен реализовать его с обратным вызовом. Который приходит неопределенным.websocket образец программы: не получить обратный вызов

Мой код:
стороне сервера код

var net = require('net'); 
var HOST = '127.0.0.1'; 
var PORT = 6969; 
net.createServer(function(socket) {  
    console.log('CONNECTED: ' + socket.remoteAddress +':'+ socket.remotePort); 
    socket.on('data', function(data, callback) { 
     console.log('Data from client :' + data + '\n'); 
     return callback('error', 'message'); 
    }); 
}).listen(PORT, HOST); 
console.log('Server listening on ' + HOST +':'+ PORT); 

стороне клиента код

var net = require('net'); 
var HOST = '127.0.0.1'; 
var PORT = 6969; 
var client = new net.Socket(); 
client.connect(PORT, HOST, function() { 
    console.log('CONNECTED TO: ' + HOST + ':' + PORT); 
}); 

client.write('I am Chuck Norris!', function(error, response){ 
    console.log(error, response); 
}); 

Я получаю эту ошибку в стороне сервера

/web/ws/server.js:10 
     return callback('error', 'message'); 
      ^
TypeError: undefined is not a function 
    at Socket.<anonymous> (/web/ws/server.js:10:14) 
    at Socket.emit (events.js:95:17) 
    at Socket.<anonymous> (_stream_readable.js:764:14) 
    at Socket.emit (events.js:92:17) 
    at emitReadable_ (_stream_readable.js:426:10) 
    at emitReadable (_stream_readable.js:422:5) 
    at readableAddChunk (_stream_readable.js:165:9) 
    at Socket.Readable.push (_stream_readable.js:127:10) 
    at TCP.onread (net.js:528:21) 

стороне клиента результат

CONNECTED TO: 127.0.0.1:6969 
undefined undefined 

** Я попытался с socket.io, который работает отлично.
** Но критерии - это «чистый» пакет

Я что-то упустил? Можно ли работать с обратными вызовами здесь? Пожалуйста, помогите мне понять. Спасибо

ответ

0

Обработчик события data в библиотеке net не имеет функции обратного вызова. например:

socket.on('data', function (chunk) { 

}); 

Если вы хотите, чтобы поймать событие для того, когда все данные потребляются вы можете использовать:

socket.on('end', function() { 

}); 

Ваш код будет выглядеть следующим образом:

var chunks = []; 

socket.on('data', function (chunk) { 
    chunks.push(data); 
}); 

socket.on('end', function (chunk) { 
    chunks = chunks.join(''); 
}); 
+0

Я. Я попытался с этим. Это работает нормально. Но возможно ли реализовать обратный вызов? Потому что мне это нужно :( –

+0

Нет, вы не можете. Но для чего вам нужен сам обратный вызов, а не просто '' 'res.write()' '' и '' 'res.end()' ''? –

+0

Его клиенты требуют. Посмотрим, что я могу сделать. Спасибо за информацию –

Смежные вопросы