Mình đang dựng 1 cái server udp bằng node, mình đưa server lên heroku để chạy online và dùng client ở dưới máy mình gởi dữ liệu lên nhưng không chạy được. Mọi người có biết cách xử lý chỗ này giúp mình không?
Đây là code server của mình:
var debug = require('debug')('gatewaylong:server');
var http = require('http');
var dgram = require('dgram');
var request = require('request');
var host = 'localhost';
var port = normalizePort(process.env.PORT || '30000');
var server = dgram.createSocket('udp4');
server.on('error', onError);
server.on('listening', onListening);
server.on('message', function (message, remote) {
console.log(remote.address + ':' + remote.port +' - ' + message);
onMessage(message);
});
server.bind(port);
function normalizePort(val) {
var port = parseInt(val, 10);
if (isNaN(port)) {
return val;
}
if (port >= 0) {
return port;
}
return false;
}
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
var bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
function onListening() {
var addr = server.address();
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
debug('Listening on ' + bind);
console.log('UDP Server listening on ' + addr.address + ':' + addr.port);
}
function onMessage(message){
var jsonObj = {"message": message};
request({
url: "https://gatewaylong.herokuapp.com:3000",
method: "GET",
json: true, // <--Very important!!!
body: jsonObj
}, function (error, response, body){
console.log(body + ' ahihi ' + message);
//console.log(jsonObj + '');
});
}
Còn đây là code client gởi data lên:
var PORT = 30000;
var HOST = 'http://gatewayudpserver.herokuapp.com';
var dgram = require('dgram');
var message = new Buffer('My KungFu is Good!');
var client = dgram.createSocket('udp4');
client.send(message, 0, message.length, PORT, HOST, function(err, bytes) {
if (err) throw err;
console.log('UDP message sent to ' + HOST +':'+ PORT);
client.close();
});
Mình cám ơn nhiều!!