I'm tailing a /var/log/logfile on ubuntu, and getting a TypeError. Works on my local Mac machine /var/log/system.log.
Command:
sudo node server.js /var/log/logfile (must be sudo to view this log file)
Error:
/npm/node_modules/node-websocket-server/lib/ws/connection.js:290
var byteLen = Buffer.byteLength(data, 'utf8'),
^
TypeError: Argument must be a string
at Connection.<anonymous> (/npm/node_modules/node-websocket-server/lib/ws/connection.js:290:26)
at clientWrite (//npm/node_modules/node-websocket-server/lib/ws/server.js:34:12)
at /npm/node_modules/node-websocket-server/lib/ws/server.js:99:7
at Manager.forEach (/npm/node_modules/node-websocket-server/lib/ws/manager.js:125:14)
at Server.broadcast (npm/node_modules/node-websocket-server/lib/ws/server.js:98:13)
at Socket.<anonymous> (/npm/server.js:63:11)
at Socket.emit (events.js:64:17)
at Socket._onReadable (net.js:677:14)
at IOWatcher.onReadable [as callback] (net.js:177:10)
Code:
/*
* server.js
*/
var util = require('util');
var sys = require("sys");
var ws = require("/npm/node_modules/node-websocket-server");
var spawn = require('child_process').spawn;
var filename = process.ARGV[2];
if (!filename)
return sys.puts("Usage: node <server.js> <filename>");
var server = ws.createServer({debug: true});
/*
* After server comes up
*/
server.addListener("listening", function() {
sys.log("Listening for connections on localhost:9997");
});
/*
* Define any port
*/
server.listen(9997);
var tail = spawn("tail", ["-f", filename]);
sys.puts("start tailing");
tail.stdout.on("data", function (data) {
/*
* Send data
*/
server.broadcast(data);
console.log('' + data);
});