-

   rss_rss_hh_new

 - e-mail

 

 -

 LiveInternet.ru:
: 17.03.2011
:
:
: 51

:


[ ] Streaming API. PHP

, 13 2017 . 17:38 +
svirepui 17:38

Streaming API. PHP

Streaming API Contest. , Streaming API , .

, , . , ( , ). ( , ..) .

.

Node.Js, , VPS , PHP.

, API .

:

//   
var socket = new WebSocket("wss://streaming.vk.com/stream?key=" + window.key);
var close_connect = ge("close_connect");

/*
*     
*/

socket.onmessage = function(event) {
  var incomingMessage = event.data;
  var loading = document.getElementById("loading_text");
  var preview = document.getElementById("preview_text");
  var serf = document.getElementById("serf");

  loading.classList.add("none");
  preview.classList.add("none");
  serf.classList.remove("none");
  parser(event.data); //    
  console.log(event.data);
};

socket.onclose = function(event) {
  if (event.wasClean) {
    console.warn('  ');
  } else {
    console.warn(' ');
  }
  console.info(': ' + event.code + ' : ' + event.reason);
  var loading = ge("loading_text");
  if (event.code == 1006) {
    loading.innerHTML = "     ,     .
- . .
- " + event.code; } else { loading.innerHTML = "- - ...
- " + event.code; } }; socket.onerror = function(error) {}; //close connect close_connect.addEventListener("click", function() { socket.close(); close_connect.innerHTML = " ."; ge("analiz_block").classList.remove("none"); }, false);


, , .. - , .

, . , , .


parser(event.data). , .

var parser = function(json) {
  var response = JSON.parse(json);
  console.log(response);
  var code = response.code;
  console.log(code);

  if (code != 100) return;

  var tpl_block = document.getElementById("tpl");
  var tpl = tpl_block.innerHTML;
  var main_tpl = tpl_block.innerHTML;
  var content = document.getElementById("main").innerHTML;
  var main = document.getElementById("main");

  var time = response.event['creation_time'];
  var date = new Date(time);
  var type;

  var cnt = ge("cnt");
  var cnt_value = +cnt.innerHTML;
  cnt.innerHTML = cnt_value + 1;

  var creation_time = timestampToDate(response.event['creation_time'] * 1000);

  if (response.event['event_type'] == "post") {
    type = "";
    count['post'] = ++count['post'];
  } else if (response.event['event_type'] == "comment") { 
    type = "";
    count['comment'] = ++count['comment'];
  } else if (response.event['event_type'] == "share") {
    type = "";
    count['share'] = ++count['share'];
  }

  var photo_context;
  if (response.event.attachments) {
    //image 
    if (response.event.attachments[0].type == "photo") {
      photo_context = '
image
'; } else { photo_context = ""; } } else { photo_context = ""; } tpl = tpl.split("{event_type}").join(type); tpl = tpl.split("{text}").join(response.event['text']); tpl = tpl.split("{url}").join(response.event['event_url']); tpl = tpl.split("{date}").join(creation_time); tpl = tpl.split("{photo}").join(photo_context); tpl = tpl.split("{type}").join(response.event['event_type']); tpl = tpl.split("{cnt}").join(cnt_value+1); tpl = tpl.split("\"").join("'"); if (filter.top) main.innerHTML = tpl + "" + content; else main.innerHTML = content + "" + tpl; //post_id if (response.event['event_type'] != "comment") { var post_owner_id = response.event.event_id['post_owner_id']; var post_id = response.event.event_id['post_id']; var wall_id = post_owner_id + "_" + post_id; array_post_id.push(wall_id); } //limit if (cnt_value + 1 >= +filter.limit) { socket.close(); close_connect.innerHTML = " ."; ge("analiz_block").classList.remove("none"); } }


:

{event_type}
{text}
{photo}
- {date}

:
1. json (, )
2. , json

. .

, , , . , . , . , , , .

var analiz = {
  start: function() {
  	//
    if (count['post'] == 0 && count['comment'] == 0 && count['share'] == 0) {
      alert("  .  -   .");
      return;
    }

    var url = "/vk-competition/VKanaliz.php";
    var loading = ge("loading_sp");
    var button = ge("btn_analiz");
    var analiz_stats = ge("analiz_stats");
    loading.classList.remove("none");
    button.classList.add("none");

    ajax.post({
      url: url,
      data: "post_id=" + array_post_id.join(","),
      callback: function(data) {
      	var resp = JSON.parse(data);
      	if (resp.error) {
      	  alert(resp.error);
      	  return;
      	} else {
      	  var count_likes_all_ = resp.response.count_likes_all;
      	  var count_share_all_ = resp.response.count_share_all;
      	  var count_views_all_ = resp.response.count_views_all;
      	  var analiz_posts = ge("analiz_post");
      	  var analiz_share = ge("analiz_share");
      	  var analiz_comments = ge("analiz_comments");
      	  var analiz_likes = ge("analiz_likes");
      	  var analiz_views = ge("analiz_views");
      	  var analiz_reposts = ge("analiz_reposts");
          var analiz_years = ge("analiz_years_");
          var analiz_sex = ge("analiz_sex");
          var percent_sex_m, percent_sex_w;

          if (resp.response.percent_sex_w == "-") 
            percent_sex_w = 0;
          else 
            percent_sex_w = resp.response.percent_sex_w;

          if (resp.response.percent_sex_w == "-")
            percent_sex_m = 0;
          else
            percent_sex_m = 100 - +percent_sex_w;

          console.log("spam " + resp.response.spam + "%");

      	  //insert data 
          analiz_posts.innerHTML = count['post'];
          analiz_share.innerHTML = count['share'];
          analiz_comments.innerHTML = count['comment'];
          analiz_likes.innerHTML = count_likes_all_;
          analiz_views.innerHTML = "H" + count_views_all_;
          analiz_reposts.innerHTML = count_share_all_;
          analiz_sex.innerHTML = percent_sex_w + "%, " + percent_sex_m + "%";
          analiz_years.innerHTML = resp.response.middle_years;

          //show stats
          loading.classList.add("none");
      	  analiz_stats.classList.remove("none");
      	}
      }
    });
  }
}


VKanaliz.php , json. .

? , , . .

.
GitHub.

!
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/337874/

:  

: [1] []
 

:
: 

: ( )

:

  URL