Socket.io 似乎没有通过 connect 提供其 socket.io.js 文件。
这是我的 server.js 代码:
var app = require('http').createServer(handler),
io = require('socket.io').listen(app),
xml2js = require('xml2js'),
parser = new xml2js.Parser(),
fs = require('fs');
// creating the server ( localhost:8000 )
app.listen(8080);
// on server started we can load our client.html page
function handler(req, res) {
console.log('liccy');
fs.readFile(__dirname + '/', function(err, data) {
if (err) {
console.log(err);
res.writeHead(500);
return res.end('Error loading client.html');
}
res.writeHead(200);
res.end(data);
});
}
// creating a new websocket to keep the content updated without any AJAX request
io.sockets.on('connection', function(socket) {
console.log(__dirname);
// watching the xml file
fs.watch(__dirname + '/example.xml', function(curr, prev) {
// on file change we can read the new xml
fs.readFile(__dirname + '/example.xml', function(err, data) {
if (err) throw err;
// parsing the new xml data and converting them into json file
parser.parseString(data);
});
});
// when the parser ends the parsing we are ready to send the new data to the frontend
parser.addListener('end', function(result) {
// adding the time of the last update
result.time = new Date();
socket.volatile.emit('notification', result);
});
});
和我的html代码:
<script src="/node/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js"></script>
<script>
// creating a new websocket
var socket = io.connect('http://betty.dev');
// on every message recived we print the new datas inside the #container div
socket.on('notification', function (data) {
$('.test').html(data.test.sample[0]);
$('time').html('Last Update:' + data.time);
});
</script>
还有我的 xml 文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
<test>
<sample>Hi 1!</sample>
</test>
尝试加载页面时出现此错误:
info - socket.io started
debug - client authorized
info - handshake authorized HPdjzW_pVy49g0bD6azs
debug - setting request GET /socket.io/1/websocket/HPdjzW_pVy49g0bD6azs
debug - set heartbeat interval for client HPdjzW_pVy49g0bD6azs
debug - client authorized for
debug - websocket writing 1::
/Users/user/webserver/betty/www/node
fs.js:1051
throw errnoException(process._errno, 'watch');
不知道是什么问题:/