2017-03-15 7 views
0

私は楽しんでるのソースコードにビットの周りを見て、このコード行が見つかりました:hm://プロトコルとは何ですか?

var ALBUM_URI = 'hm://album/v1/album-app/album/';

をそして私は、このhm://プロトコルが何であるか疑問に思いました。残念ながら、Googleで何も見つかりませんでした。

A code-snippet Context taken FROM HERE

var live = require('spotify-live'); 
var Cosmos = require('spotify-cosmos-api'); 

var ALBUM_URI = 'hm://album/v1/album-app/album/'; 

var formatData = require('../data_formatters'); 

/** 
* Album model contains all album data 
* @param {string} albumURI The Spotify uri for an album to create a model. 
*/ 
function AlbumModel(albumURI) { 
    this.albumURI = albumURI; 
    this.album = live(albumURI); 
} 

AlbumModel.prototype.init = function(callback) { 
    this.callback = callback; 

    var requestURI = ALBUM_URI + this.albumURI + '/desktop'; 

    Cosmos.resolver.get(requestURI, this.prepareData.bind(this)); 
}; 

AlbumModel.prototype.prepareData = function(error, data) { 
    if (error) { 
    var errorStatusCode = error.response ? error.response.getStatusCode() : 500; 

    var simplifiedStatusCode = 400; 
    if (400 <= errorStatusCode && errorStatusCode <= 410) { 
     simplifiedStatusCode = 400; 
    } else if (500 <= errorStatusCode && errorStatusCode <= 503) { 
     simplifiedStatusCode = 500; 
    } 

    this.callback(simplifiedStatusCode, {}); 
    return; 
    } 

    var albumData = data.getJSONBody(); 
    albumData = formatData(albumData); 

    if (!this.album.get('rows')) { 
    this.album.update(albumData); 
    } 

    this.callback(null, albumData); 
}; 

module.exports = AlbumModel; 

答えて

2

HMは短いエルメス、Spotifyはでサーバの間で内部的に使用されるプロトコルです。基本的にはいくつかのヘッダを定義したprotobufエンベロープを持つzeromqです。

したがって、HTTPのような種類のものは、TCPの動詞と構造を定義しているため、Hermesはzeromqの動詞と構造上の定義を定義します。これはHTTPのようなリクエスト/レスポンスとPublish/Subscribeのために使用されます。たとえば、見つかった例では、クライアントはアルバムに関するデータを要求し、応答を待ちます。もう1つの例は、プレイリストに関するイベントに加入しているクライアントです。誰かがプレイリストに変更を公開すると、クライアントはそのことを知るでしょう。

見つかった例では、もっと複雑になります。それは、Spotifyウェブプレーヤーで見つかったjavascriptスニペットのようです。ブラウザーのJavascriptはもちろんこのプロトコルを話すことはできません。あなたがそこにuriを見るので、何らかのトンネリングが起こっていることを意味します。

ある意味では、HTTP以上の処理を行うことができますが、別の意味では、限られた使用のためにはるかに簡単です。それはHTTP/2とgrpcの前に、何年も前に作られました。それはまだSpotifyで頻繁に使用されています。

私は、hermesについてより詳しく述べた論文の仕事と業界の記事を見つけました。

http://www.diva-portal.org/smash/get/diva2:706244/FULLTEXT01.pdf https://www.csc.kth.se/~gkreitz/spotifypubsub/spotifypubsub.pdf

関連する問題