Articles of html5

peerConnection.addIceCandidate错误:无效的string

我正在尝试实现仅限语音的WebRTC应用程序。 我在Chrome Version 29.0.1547.0 dev上运行它。 我的应用程序使用Socket.IO的信号机制。 peerConnection.addIceCandidate()给我这个错误: Uncaught SyntaxError: An invalid or illegal string was specified. 并分开, peerConnection.setRemoteDescription(); 给我这个错误: Uncaught TypeMismatchError: The type of an object was incompatible with the expected type of the parameter associated to the object. 这是我的代码: SERVER (在CoffeeScript中) app = require("express")() server = require("http").createServer(app).listen(3000) io = require("socket.io").listen(server) app.get "/", (req, res) […]

将JavaScriptstring拆分为固定长度的部分

我想分割一个string到固定长度(例如N )件。 当然,如果原始string的长度不是N的倍数,最后一块可能会更短。 我需要最快的方法来做到这一点,也是最简单的写法。 我到现在为止的做法如下: var a = 'aaaabbbbccccee'; var b = []; for(var i = 4; i < a.length; i += 4){ // length 4, for example b.push(a.slice(i-4, i)); } b.push(a.slice(a.length – (4 – a.length % 4))); // last fragment 我认为必须有更好的方式去做我想做的事情。 但是我不想要额外的模块或库,只要简单的JavaScript就可以了。 在问之前,我已经看到了一些使用其他语言来解决这个问题的解决scheme,但是这些解决scheme并不是用JavaScript来devise的。

Node.js Webm直播stream服务器:与<video>标记的问题

我使用Node.js作为stream服务器来传输FFMPEG发送的实时Webmvideo(从另一个应用程序执行,stream通过HTTP完成),并由使用该标记的Web应用程序接收。 这是我在做什么:FFMPEG使用以下命令stream接收的帧: ffmpeg -r 30 -f rawvideo -pix_fmt bgra -s 640×480 -i \\.\pipe\STREAM_PIPE -r 60 -f segment -s 240×160 -codec:v libvpx -f webm http://my.domain.com/video_stream.webm (stream来自使用Kinect作为源的应用程序,并通过pipe道与FFMPEG通信,发送一个接一个的帧) 当Web应用程序连接时,它立即从服务器接收到这个响应: HTTP/1.1 200 OK X-Powered-By: Express content-type: video/webm cache-control: private connection: close Date: Fri, 06 Dec 2013 14:36:31 GMT 和一个WebM标题(以前存储在服务器上,具有相同的源stream的分辨率和帧速率,并在VLC上进行testing)被立即追加。 然后webapp开始接收由FFMPEGstream传输的数据。 这是Mkvinfo GUI的屏幕截图,显示标题的字段: 但是,即使Chrome控制台的“networking”标签显示存在实际的数据stream(即stream式传输不完全是垃圾,否则连接将被丢弃),播放器也不会显示任何内容。 我们尝试手动将我们的标题添加到Web应用程序收到的转储的video,VLC播放它就好了,但这不是标签发生的情况。 什么会导致这个问题? 我们是否错过了FFMPEG方面的编码,或者我们在头上存储了错误的值(或者它们不够)? PS:我不能依靠外部stream服务器。 PPS:我们尝试了以下实验: 使用存储在服务器中的video标题代替video标题使video可以在vlc和video标签上播放 […]

WebSocketclosures发送

所以我看到了这个伟大的博客文章, 试用Node.js。 我决定尝试用作者的要点自行设置它。 它没有工作。 进一步的debugging表明,websocket连接正常,但是一旦“send”被调用就closures。 这是wireshark踪迹(原谅奇怪的间距): GET /test HTTP/1.1 Host: 127.0.0.1:8000 Sec-WebSocket-Key2: 3 j 92 9 62" 7 0 8 8 Upgrade: WebSocket Connection: Upgrade Origin: http://127.0.0.1:3000 Sec-WebSocket-Key1: 96'5% S72.93?06 ……(bHTTP/1.1 101 WebSocket Protocol Handshake Upgrade: WebSocket Connection: Upgrade Sec-WebSocket-Origin: http://127.0.0.1:3000 Sec-WebSocket-Location: ws://127.0.0.1:8000/test .4.R….mh…..{.{"action":"move","x":450,"y":22,"w":1146,"h":551}. 我已经在Chrome和Firefox 4.0testing版中尝试了这一点。 他们都performance出相同的行为。 如果我去原始的博客网站 ,它工作正常。 另一件事。 如果我在FF或Chrome中进入JS控制台,并执行以下操作: ws = new WebSocket('ws://localhost:8000/test') […]

通过socket.io 1.0现场audio

从socket.io网站 二进制stream媒体 从1.0开始,可以发送任何blob:图像,audio,video。 我现在想知道,如果这不能解决我最近想做的事情。 实际上,我正在寻找一种方法,将(A – 即麦克风input…)的现场audiostream广播到连接到我的网站的所有客户端。 是这样的可能吗? 我一直在搞乱WebRTC( https://www.webrtc-experiment.com/ )的例子,但是我还没有能够为less数连接的客户端pipe理目标。 我的想法是关于像getUserMedia或任何其他audio源(PCM,无论.. ..)被切碎,并提供给客户端和播放例如HTML5audio元素或任何东西..我需要做的stream尽可能实时,没有大声/冰投服务不够快(事实上,他们不是我的问题的解决scheme,他们的意思是用这种方式),我并不关心audio质量。 跨平台兼容性将会很棒。 是这样的可能吗? 通过使用socket.io作为如何将这些数据提供给客户端? 我将非常感谢任何参考,提示或来源,可以帮助我实现这一点。 非常感谢。

包括带有html和node.js的js文件

我正在通过运行在node.js上的HTML5客户端和服务器之间的websockets执行消息传递。 当然,我selectJSON作为消息格式,并创build了常见的JavaScript代码,定义了各种消息内容types和转换操作。 JavaScript代码在两个项目之间共享。 我创build了我的web客户端作为一个git项目,我的服务器作为另一个git项目。 部分原因是因为我正在使用phonegap为各种基于触摸的环境构build基于webkit的客户端。 这也是各种逻辑的一个很好的分离。 为了共享公共代码,我为公共逻辑创build了一个单独的项目,并使用git的子项目将代码“导入”其他两个项目。 现在这对基于html5的项目工作正常,因为我可以做以下包括代码: <script src="common/js/comms.js" type="text/javascript"></script> 然而,使用节点时,我试图获取代码时遇到了问题。 得到代码,我已经结束了以下操作: var fs = require('fs'); eval(fs.readFileSync('./common/js/comms.js').toString()); 虽然我采取的方法工作,我注意到,当我有依赖(如,我需要x.js,y.js和x.js,如果我想a.js),它开始变得非常混乱,我必须为每一个希望使用这些实体的node.js js文件做这件事。 我也不舒服使用eval方法。 我没有安全问题,虽然我想使用严格的模式,这是我的理解,eval和严格模式像油和水一起走到一起。 所以我的问题是什么是在HTML项目和node.js项目之间包含共享js文件的最佳方法? 我宁愿遵循严格的东西。 我应该注意的是,虽然围绕这个话题有几个问题,但我找不到解决我提出的具体问题的任何问题。 我还要补充一点,我不希望“服务”来自“服务器”的文件。 HTML5客户端将是“独立”的。 澄清一下,我在“常用js文件”中的内容如下: var Comms = function (options) { … } 在HTML5中,我可以直接引用new Comms() ,这也是我想要在node.js中做的事情。

html5的岩石节点js服务器发送事件SSE示例不起作用

链接到文章: http : //www.html5rocks.com/en/tutorials/eventsource/basics/ 在这个例子中,node.js SSE服务器不工作。 我最终打开了/events连接,但浏览器没有收到任何响应。 SSE-server.js var http = require('http'); var sys = require('sys'); var fs = require('fs'); http.createServer(function(req, res) { //debugHeaders(req); if (req.headers.accept && req.headers.accept == 'text/event-stream') { if (req.url == '/events') { sendSSE(req, res); } else { res.writeHead(404); res.end(); } } else { res.writeHead(200, {'Content-Type': 'text/html'}); res.write(fs.readFileSync(__dirname + '/sse-node.html')); res.end(); } […]

如何提交HTML5canvas作为表单发布的一部分?

我正在寻找stream图像数据从一个canvas标签到一个node.js服务器。 我可以自己处理服务器端代码,但是如何从canvas提交数据呢? 我希望能够提供一个涉及多部分表单数据的build议,因为我想要传输数据,因为我期待50 MB左右的图像。 如果我试图一次性发布数据,它往往会崩溃客户端的浏览器。

使用WebSockets进行多人HTML5游戏开发。 select什么,Node.js,或棘轮,或其他?

在提出这个问题之前,我做了一些研究,但却找不到具体的答案。 对于WebSockets和游戏开发,我还是一个新手,所以我可能无法很好地解释某些部分,如果是这种情况,请告诉我,这样我就可以更好地解释它。 我目前正在开发一个使用CakePHP的Web应用程序,它将提供几种HTML5多人游戏。 在某些情况下,这些游戏需要将数据发送到数据库。 问题是,我想使用Node.js来实现游戏服务器端的逻辑,但我不知道我是否能够将数据传递到数据库。 我认为最好的方法是将数据从Node.js发送到PHP动作,然后将其存储在数据库中,但我也不知道这是否可能。 我发现这个DNode的东西,但我不知道这是否是我的问题的答案,除此之外,它似乎是在testing版本,我想避免。 作为替代scheme,我想过使用棘轮来实现游戏服务器端的逻辑。 至less我知道我可以使它与我的应用程序进行通信,但由于我无法在游戏开发中find任何参考,所以我不确定这是否是一个好主意。 我不知道任何其他的框架,所以如果我有比这两个更好的select,请告诉我:) 请给我你的意见。 谢谢!

通过Web Audio API进行分块/audio回放

我在最后一篇文章中提出了这个问题,但是因为这个问题与原来的问题有关,所以我将它们分开发布。 我无法通过networkingaudio播放audio,就像在媒体播放器中播放audio一样。 我已经尝试了2种不同的传输协议,binaryjs和socketio,并且在尝试通过Webaudio播放时也没有什么不同。 为了排除传输audio数据的问题,我创build了一个例子,在从客户端接收到数据后将数据发送回服务器,并将返回的数据转储到标准输出。 将其configuration到VLC中会产生您期望听到的聆听体验。 要通过vlc播放结果时听到结果,听起来应该如此, 请使用以下命令运行https://github.com/grkblood13/web-audio-stream/tree/master/vlc上的示例: $ node webaudio_vlc_svr.js | vlc – 不pipe什么原因,当我尝试通过Webaudio播放相同的audio数据时,它失败了。 结果是随机噪声,两者之间有很大的空白。 下面的代码会导致播放声音如此糟糕? window.AudioContext = window.AudioContext || window.webkitAudioContext; var context = new AudioContext(); var delayTime = 0; var init = 0; var audioStack = []; client.on('stream', function(stream, meta){ stream.on('data', function(data) { context.decodeAudioData(data, function(buffer) { audioStack.push(buffer); if (audioStack.length > 10 && init == […]