Articles of javascript

检测HLSaudiocanplay事件

我正在使用nginx和nginx rtmp模块为手机创buildaudiostream。 对于video,我使用ffmpeg将video切片为jpeg图像,并以此方式向移动用户显示videostream。 audio将分开导致15-30秒的audio延迟。 我认为这是因为jpegs的video在audio缓冲区之前启动。 所以我试图捕捉<audio>事件“canplay”,当这个事件触发,然后开始video预览。 audio源例如: http : //example.com : 8081/hls/audio.m3u8 检测代码: var audio = document.getElementById('preview-audio'); audio.oncanplay=function(){ console.log('audio loaded'); }; 但是这个事件永远不会发生。 只有发生的事件是“loadstart”和“progress”。 我怎样才能检测到audio缓冲,以便我可以与JPEG同步? 提前致谢

IE对hash改变做出额外的GET请求

当我做一个XMLHttpRequest,我也改变window.location.hash 。 例如, mysite.com/gallery/q#1变成mysite.com/gallery/q#2 。 当发生这种情况时,IE8,如Fiddler和nginx日志显示,将这个奇怪的额外请求mysite.com/gallery/ (这是404)。 该页面不重载,它就像一个XMLHttpRequest。 GET http://mysite.com/gallery/ HTTP/1.1 Accept: */* Referer: http://mysite.com/gallery/q User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727) Accept-Encoding: gzip, deflate Host: mysite.com Connection: Keep-Alive 另外,哈希更改或Ajax请求不会触发这个额外的。 另外需要注意的是 – 额外的请求并不是每个 Ajax请求都发生。 它看似随机发生。 它可以是Nginx的configuration错误? 或者它只是众多IE8漏洞中的一个? 有没有解决方法? 我不想要这个额外的负载。 更新 这里是Ajax代码( $代表jQuery): var id = link.getAttribute('data-id') var xhr = $.ajax({ […]

如何设置nginx背后的Phantomjs

我正在为我的angular度应用程序的search引擎优化,我使用PhantomJS呈现HTML时,它是一个履带。 由于某种原因,我得到一个501当我做http://aaaaa.com/?_escaped_fragment=/home但我得到我的网页,当我做http://aaaaa.com 这告诉我,这可能是由nginxconfiguration文件,路由不正确。 这是我的nginxconfiguration(至less是snippet): #mi angular app server { location / { if ($args ~ _escaped_fragment_) { proxy_pass http://localhost:8888; break; } root /var/www/html/miwebapp/client/app; } } 这里是我用来运行phantomjs的命令: phantomjs –disk-cache=no angular-seo-server.js 8888 http://localhost:8000/home 当我运行它时,我得到: Listening on 8888… Press Ctrl+C to stop. 所以幻影开始,但请求失败…任何想法?

Https Nginx NodeJS SocketIO和CORS请求失败

这是我的问题, 背景: 我有一个NGinx服务器工作。 NGinx使用证书来启用HTTPS。 从那里没问题。 我有一个NodeJS服务器工作,这只是应该处理websockets,使用socketIO。 我正在testingMozilla Firefox(这可能不是最好的…) 应用程序是第一个HTTP,并且一切工作正常。 现在,所有切换到HTTPS,我面临“交叉来源”的问题。 我已经尝试了几个解决scheme,但是他们都没有为我工作…我会解释我在post末尾所做的尝试。 首先,让我向您展示有关文件,nodeJS的server.js,NGinx服务器的nginx.conf以及应该连接websocket的“client script”。 server.js – NodeJS var app = require('express')(); var fs = require('fs'); var https = require('https'); var _ = require('underscore'); var socketio = require('socket.io'); var options = { key: fs.readFileSync('/ssl/file.key'), cert: fs.readFileSync('/ssl/file.crt') }; var server = https.createServer(options).listen(9001,function(){ console.log("SERVER LISTENING"); }); io = socketio.listen(server,{origins:'*:*'}); […]

是否有可能像使用PHP文件一样使用Node.js而不运行服务器?

我现在正在进入Node.js,并喜欢我如何使用我的前端知识来创build服务器端应用程序。 然而,我喜欢PHP的东西是你可以发布或执行/打开一个文件,它是由服务器自动运行的。 我不喜欢PHP的东西是语法和速度 – 我想为我的所有服务器端function(例如计费脚本或注册脚本)使用Node.js和Javascript。 所以…有没有一种方法可以运行一个Node.js应用程序,就像一个PHP脚本一样,我的意思是没有创build一个持续运行的服务器,并且必须在terminal中运行“node app.js”脚本? 喜欢…有什么我可以写的Nginx的东西,使这项工作? 我不想在Node.js服务器上运行整个站点。

如何处理node.js服务器的大量负载?

我的node.js服务器将处理50k同时客户端。 单个node.js服务器无法处理这种负载量。 我想设置5或10个node.js服务器运行在不同的端口上。 并且,有一个负载平衡器,例如Nginx,监听每个node.js服务器。 当一台服务器达到10k客户端时,将多余的进入连接路由到其他node.js服务器。 这是用node.js处理这种负载的正确方法吗? 如果不是,最好的做法是什么?

Kibana卡在加载屏幕

Kibana没有正常启动。 当我打开控制台时,它似乎是一个JavaScript资源问题。 当我直接打开js文件(点击控制台中的链接),看起来它们不完整,并被突然中断。 不知道这是一个浏览器文件的限制或不知何故我的文件被切断? 请看下面的图片,告诉你我在看什么。 在铬中看到的文件。 这是根据chrome加载它的文件的最底部。 我已经重新启动了kibana,看看是否能解决它,没有运气。 我认为浏览器在js文件中有最大限度的行数限制。 我不知道为什么kibana没有缩小js文件? 它启动了一些开发模式? 问题总结 我想我已经发现kibana不加载的原因是因为js没有完全加载,这将改变我的问题,我怎么能得到我所有的JavaScript加载? 更新 我find了JS文件在kibana bundles文件夹中,发现文件完整无缺。 这确实是一个浏览器加载完整的文件问题。 我很困惑,为什么突然这些文件太长,不能被浏览器加载? 两星期前工作正常。 仍然试图找出如何获得铬加载文件。 正如@asettouf所build议的,我在/opt/kibana/optimize目录中删除了(备份) bundles文件夹,并再次启动了kibana。 这确实重新生成bundles文件夹,但文件是相同的,这意味着我仍然有同样的问题。 为什么Kibana在捆绑文件进行caching时不会将js缩小? 我的kibana.yml 。 我认为粘贴到它的链接是干净的: http://www.heypasteit.com/clip/O8HUN 回去打开详细日志logging,这是我从删除优化文件夹和重新启动输出。 没有什么突出的错误信息给我。 /var/log/kibana/kibana.log 为了隐私和安全的原因,用localhostreplace主机名 http://www.heypasteit.com/clip/OA4OR 我认为这是一个错误的webpack模块不正确地编译JS。 但是,我不知道足够的模块来debugging它。 优化文件夹中有问题的文件是: commons.bundle.js是65723行 在108950 行 kibana.bundle.js 这些都没有进行优化,文件内的内容没有被缩小。 curl -v localhost:5601结果curl -v localhost:5601 http://www.heypasteit.com/clip/OEKEX CURL要求直接向KIBANA JS RESOURCES 我可以确认, curl -ukibanaadmin -v http://localhost/bundles/commons.bundle.js返回完整的108950内衬的JS文件和curl […]

使用sc-server代理HTTPS请求

我似乎无法使用sc-server代理https(SSL)请求。 服务器一直在说REDIRECTING TO,但是我什么也得不到,因为请求被取消了 我希望有一些可能的configuration。

如何安装多个nodejs应用程序与多个域?

我在这个时候比以往任何时候都阅读,这将是我的第一个网页,所以我决定装载在nodejs上。 我非常快速地创build应用程序,并在localhost:9000中进行testing 所以我想把更多的应用程序在VPS上运行,我search信息,我有两个选项 首先使用nginx来代理应用程序… upstream example1.com { server 127.0.0.1:3000; } server { listen 80; server_name www.example1.com; rewrite ^/(.*) http://example1.com/$1 permanent; } # the nginx server instance server { listen 80; server_name example1.com; access_log /var/log/nginx/example1.com/access.log; # pass the request to the node.js server with the correct headers and much more can be added, see nginx config […]

如何定义Node.js应用程序上下文path?

来自Java世界,基于Servlet的应用程序上下文path基于WAR文件名设置,我想了解在Node.js中定义上下文path的最佳实践。 有问题的Node应用程序没有在代码中定义的上下文path。 Express代码假定获取故事的请求,例如URL的path为/ story / 1。 因此,JavaScript UI代码会向http:// host:port / story / 1发出请求。 同样,对于用户连接到主应用程序页面,他们将转到http:// host:port / 。 我想将用户看到的URL改为http:// host:port / myapp 。 问题是如何一致地定义“myapp”作为应用程序上下文。 我正在考虑的选项: 在Express.js代码中定义上下文。 在Nginx代理服务器中定义上下文。 如何确保用户始终在URL中看到“myapp”? 我是否还需要重新映射所有内部请求(由UI代码所做的)还有“/ myapp”上下文? 使用Nginx似乎更清洁,因为它不需要更改代码。 但是,这个目标是否可以通过Nginxconfiguration来实现,如果是这样的话,怎么样? 由于这是一个普遍的问题,因此必须有一个明确的模式来解决这个问题。