我正在尝试使用Gnip PowerTrack API,它要求我使用基本身份验证连接到JSON的HTTPS流.我觉得这应该是相当微不足道的,所以我希望一个比我更聪明的红宝石能指出我明显的错误.
这是我的ruby 1.9.3代码的相关部分:
require 'eventmachine'
require 'em-http'
require 'json'
usage = "#{$0} <user> <password>"
abort usage unless user = ARGV.shift
abort usage unless password = ARGV.shift
GNIP_STREAMING_URL = 'https://stream.gnip.com:443/foo/bar/prod.json'
http = EM::HttpRequest.new(GNIP_STREAMING_URL)
EventMachine.run do
s = http.get(:head => { 'Authorization' => [user, password], 'accept' => 'application/json', 'Accept-Encoding' => 'gzip,deflate' }, :keepalive => true, :connect_timeout => 0, :inactivity_timeout => 0)
buffer = ""
s.stream do |chunk|
buffer << chunk
while line = buffer.slice!(/.+\r?\n/)
puts JSON.parse(line)
end
end
end
Run Code Online (Sandbox Code Playgroud)
流连接(My …
我正在努力在多个直播流之间切换.例如,我有五个实时流媒体服务器流(HTTP或RTSP),我想在这些(五个)流媒体源和目的地之间放置一些代理,以便输出到目的地将是一个视频流(后来我可能会更改流媒体源再次使用开关).经纪人扮演转换者的角色,我的问题是,是否有这样的开源"切换器"?或者这项技术如何运作?
这里是类似问题的链接,但我想要一些开源或一些关于如何实现它的简要指导:http://forums.creativecow.net/thread/117/858680
先感谢您
我工作的iOS应用程序,它允许下载和HTTP实时流的私人视频.视频存储在Amazon S3存储桶中(mp4作为m3u8/ ts文件分段).此外,CloudFront已打开并连接到存储桶.
由于内容是私有的,因此我需要在通过CloudFront连接时对URL进行签名.为了对URL进行签名,必须使用私钥,因此,如果不将私钥存储在捆绑包中,则无法在iOS应用程序中生成签名URL.这将是个坏主意!
所以我决定编写一个简单的Ruby服务器,它执行URL签名并重定向到生成的签名CloudFront URL,如下所示:
HTTP://signing.server.local/videos/1.mp4 →交通 https://acbdefg123456.cloudfront.net/videos/1.mp4??Expires=XXX&Signature=XXX&Key-Pair-Id=XXX
HTTP://signing.server.local/videos/1.m3u8 →交通 https://acbdefg123456.cloudfront.net/videos/1.m3u8??Expires=XXX&Signature=XXX&Key-Pair-Id=XXX
对于视频下载,它运行良好,因为只有一个请求.但是,当我希望流式传输内容并提供MPMoviePlayerController签名服务器的URL时,服务器只会签署第一个请求并重定向到CloudFront.对于下一个请求,MPMoviePlayerController将第一个签名的CloudFront URL作为基础并尝试直接连接而不会抛出签名服务器.
m3u8文件中的路径是相对的.
有关如何实现此功能而无需通过签名服务器发送所有内容的任何建议?
video mpmovieplayercontroller http-streaming ios amazon-cloudfront
我在rails 3.1中设置了独角兽,http流式传输工作直到我启用Rack :: Deflater.无论是否使用Rack :: Chunked,我都试过了.在卷曲中,我可以看到我在Chrome中的响应,我得到以下错误:ERR_INVALID_CHUNKED_ENCODING
其他浏览器(firefox,safari)以及开发(osx)和生产(heroku)之间的结果相同.
config.ru:
require ::File.expand_path('../config/environment', __FILE__)
use Rack::Chunked
use Rack::Deflater
run Site::Application
Run Code Online (Sandbox Code Playgroud)
unicorn.rb:
listen 3001, :tcp_nopush => false
worker_processes 1 # amount of unicorn workers to spin up
timeout 30 # restarts workers that hang for 30 seconds
Run Code Online (Sandbox Code Playgroud)
控制器:
render "someview", :stream => true
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
我正在开发一个使用Comet Hidden iFrame技术将数据从服务器推送到移动浏览器的Web应用程序.
在Mobile Safari上一切正常,但Android更加痛苦.它似乎需要从服务器发送4 KB消息,以便将消息记入帐户.这是针对每条消息而不仅仅是第一条消息.
有些人尝试使用XMLHttpRequest流媒体实现Comet但具有相同的4KB问题(http://code.google.com/p/android/issues/detail?id=13044)
有没有人设法在Android浏览器上实现Comet技术而无需将消息填充到4KB?
在Android 2.1,2.2上测试过
即使在Android 4.0版本http://caniuse.com/eventsource上也似乎不支持服务器发送事件
websocket http://caniuse.com/websockets也是如此
谢谢
-seb
我正在尝试在 Jira 中创建一个问题。
我能够以正确的响应发出 GET 请求,但是当我发出 POST 请求时出现问题。这是代码。
<?php
$userName ='xxxxxxxxxxxxxxxx';
$password ='xxxxxxxxxxxx';
$data = ['fields' => ['projects'=>['key'=>'ABC'],'summary'=>'abc','description'=>'abc','issuetype'=>['name'=>'Task']]];
$data = http_build_query($data);
$context =
array("http"=>
array(
"method" => "POST",
"header" => "Authorization: Basic " . base64_encode($userName.':'.$password) . "\r\n".
'Accept: application/json'."\r\n".
"Content-Length: ".strlen($data)."\r\n".
'Content-Type: application/json'."\r\n",
'content' => $data,
'verify_peer'=>false,
'verify_peer_name'=>false,
)
);
$context = stream_context_create($context);
$result = file_get_contents("https://xxxxx.atlassian.net/rest/api/2/issue/", false, $context);
echo "The result is ", $result;
Run Code Online (Sandbox Code Playgroud)
?>
我收到以下错误:
Warning:file_get_contents(https://xxxxx.atlassian.net/rest/api/2/issue/):
failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in
/var/www/html/test/new.php …Run Code Online (Sandbox Code Playgroud) 我想以某种方式进行数据流传输,并尝试使用SSE与Websockets。
使用SSE构成golang服务器,我发现它使会话结束时如何通知客户端感到困惑。(例如,服务器已完成事件的发送或服务器突然脱机或客户端失去连接)
我需要做的一件事就是可靠地知道何时断开连接。到目前为止,还没有使用超时等方法。我的实验是,当我使服务器脱机时,客户端会收到EOF。但是我很难弄清楚如何从服务器向客户端发送信号,表明连接已关闭/完成,然后如何处理/读取它?EOF是确定关闭/错误/完成状态的可靠方法吗?
SSE的许多示例都无法说明客户端良好的客户端连接处理。
使用Websockets会更容易吗?
任何经验建议最感激。
谢谢
所以,我正在使用 node 创建一个 REST API,我必须创建一个路由。路由的目的:充当代理服务器并调用不同的外部网站并返回它对原始请求的响应。到目前为止,我有以下代码并且它有效:
app.post('/v1/something/:_id/proxy',
function(req, res, next) {
// Basically make a request call to some external website and return
// the response I get from that as my own response
var opts = {/*json containing proper uri, mehtod and json*/}
request(opts, function (error, responseNS, b) {
if(error) return callback(error)
if(!responseNS) return callback(new Error('!response'))
return res.json(responseNS.body)
})
}
)
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何流式传输从外部网站获得的这个 http 响应。我的意思是,我想以流的形式获取响应,并在它以块的形式出现时立即返回它。这可能吗?
我有一个来自 http 响应的音频数据流。我使用URLSessionDataDelegate方法接收字节数据包:
urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data)
在使用AVAudioPlayer对象及其initWithData:初始化方法将所有数据包附加到单个 Data 对象后,我成功播放了音频。
我真正想做的是在数据仍在传入的同时开始音频播放 -有效地流式传输音频。对于这个用例,我还没有看到任何看起来很优雅的答案。
我见过的选项是:
我将如何从传入的数据包中实现音频流播放?
我正在尝试调用一个 twitter 端点,该端点为您提供持续的 json 结果流回客户端
https://documenter.getpostman.com/view/9956214/T1LMiT5U#977c147d-0462-4553-adfa-d7a1fe59c3ec
我尝试像这样呼叫端点
val url = "https://api.twitter.com/2/tweets/search/stream"
_streamChannel = _client.get<ByteReadChannel>(token, url) //Stops here
val byteBufferSize = 1024
val byteBuffer = ByteArray(byteBufferSize)
_streamChannel?.let {
while (_streamChannel!!.availableForRead > 0) {
_streamChannel!!.readAvailable(byteBuffer, 0, byteBufferSize)
val s = String(byteBuffer)
parseStreamResponseString(s).forEach {
emit(Response.Success(it))
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的client.get代码是这样的
suspend inline fun <reified T> get(authKey: String, url: String): T? {
val response = _client.get<HttpResponse>(url) {
header("Authorization", "Bearer $authKey")
}
when (response.status.value) {
in 300..399 -> throw RedirectResponseException(response)
in 400..499 -> throw …Run Code Online (Sandbox Code Playgroud)