Socket Programming
Node.js除了Web上的應用,其針對Socket的支援也相當亮眼... 基於JS語言的特性,在Node.js socket programming中,都是透過on來聆聽事件的event,做出相對應的操作。
下面是個Socket Client的範例:
var net = require('net');
var HOST = 'localost';
var PORT = 22661;
var client = new net.Socket();
/**
* 使用port與host來設定socket物件
*/
client.connect(PORT, HOST, function() {
//連線時候訊息與操作
console.log('CONNECTED TO: ' + HOST + ':' + PORT);
// Write a message to the socket as soon as the client is connected,
// the server will receive it as message from the client
client.write('I am Chuck Norris!');
});
// Add a 'data' event handler for the client socket
// data is what the server sent to this socket
client.on('data', function(data) {
console.log('DATA: ' + data);
// Close the client socket completely
client.destroy();
});
// Add a 'close' event handler for the client socket
client.on('close', function() {
console.log('Connection closed');
});
Socket Server的部分,是透過原生地net module提供,官方提供的範例如下
var net = require('net');
var server = net.createServer(function (socket) {
socket.end("goodbye\n");
});
// 未指定port位置,則會動態使用系統可用Port
server.listen(function() {
address = server.address();
console.log("opened server on %j", address);
});
測試Socket Server執行:
$ node server.js
opened server on {"address":"0.0.0.0","family":"IPv4","port":51958}
Telnet Client執行:
telnet 127.0.0.1 51958
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
goodbye
Connection closed by foreign host.