作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在创建一个在 Windows 上使用 node.js 的本地应用程序。这个想法是监视特定文件并在文件更改时将内容发送到浏览器。
现在,为了测试,我只是从控制台查看文件上的 fs.watch。我注意到,对我正在观看的文件的单一更改会向控制台创建双重输出。
这是服务器:
var fs, http, io, server;
fs = require('fs');
http = require('http');
server = http.createServer(function(req, res) {
return fs.readFile("" + __dirname + "/socket.io.demo.html", function(err, data) {
res.writeHead(200, {
'Content-Type': 'text/html'
});
return res.end(data, 'utf8');
});
});
server.listen(1337);
fs.watch('/', function (event, filename) {
console.log('event is: ' + event);
if ('test.txt') {
console.log('filename provided: ' + filename);
} else {
console.log('filename not provided');
}
});
io = require('socket.io').listen(server);
io.sockets.on('connection', function(socket) {
socket.on('publish', function(message) {
return io.sockets.send(message);
});
socket.on('broadcast', function(message) {
return socket.broadcast.send(message);
});
return socket.on('whisper', function(message) {
return socket.broadcast.emit('secret', message);
});
});
这是 html:
<!doctype html>
<html>
<head>
<title>Socket.IO demo</title>
</head>
<body>
<h1>Socket.IO demo</h1>
<input type="text" autofocus="autofocus" />
<button type="button">publish</button>
<button type="button">broadcast</button>
<button type="button">whisper</button>
<p>Status: <span id="status">Undefined</span></p>
<ol id="messages"></ol>
<script src="/socket.io/socket.io.js"></script>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="http://jashkenas.github.com/coffee-script/extras/coffee-script.js"></script>
<script type="text/coffeescript">
jQuery ($) ->
$status = $ '#status'
socket = io.connect()
socket.on 'connect', ->
$status.text 'Connected'
socket.on 'disconnect', ->
$status.text 'Disconnected'
socket.on 'reconnecting', (seconds) ->
$status.text "Reconnecting in #{seconds} seconds"
socket.on 'reconnect', ->
$status.text 'Reconnected'
socket.on 'reconnect_failed', ->
$status.text 'Failed to reconnect'
socket.on 'message', (message) ->
$('<li>').text(message).appendTo $('#messages')
socket.on 'secret', (message) ->
console.log message
$input = $ 'input'
$('button').click ->
socket.emit $(this).text(), $input.val()
$input.val('').focus()
</script>
</body>
</html>
关于为什么 fs.watch 在控制台中创建双输出有什么想法吗?
最佳答案
看起来像一个 Node 错误。 https://github.com/joyent/node/issues/2126
作为临时解决方案,您可以考虑使用 setTimeout 来平滑事件。
关于Node.js fs.watch - 单次更改输出多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8812637/
当用户在 uisearchbar 中键入文本时,我正在过滤一个数组,但问题是我有一个警报处理程序,每次调用委托(delegate)时都会触发该处理程序,但我希望警报出现只有一次没有多次......代码
我有一个 HTML5、jQuery 卡片内存游戏,您可以通过一次翻转两张卡片来匹配卡片。我想在两张卡片匹配时播放动画,但因为我已经将 "transform: rotationY(180deg)" 应用
在我的 Jboss-EAP-6.1 中,我部署了一个名为 'myRealWebApp.war' 的 .war我可以使用此网址访问我的应用程序 - http://mywebsite.com/myReal
我是一名优秀的程序员,十分优秀!