component.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. var mid=1;
  2. var access_token="";
  3. function getMid(){
  4. mid++;
  5. if(mid>10000){
  6. mid=1;
  7. }
  8. return mid;
  9. };
  10. function getPingData(data){
  11. var ping={
  12. productKey:"",
  13. deviceName:"",
  14. content:{
  15. id:getMid(),
  16. type:data
  17. }
  18. };
  19. return {
  20. type:"action",
  21. data:{
  22. productKey:"",
  23. deviceName:"",
  24. state:""
  25. },
  26. action:{
  27. type:"ack",
  28. content:JSON.stringify(ping)
  29. }
  30. }
  31. };
  32. //必须提供onReceive方法
  33. this.onReceive=function(head,type,payload){
  34. var data=JSON.parse(payload)
  35. if(data.type=="auth_required"){
  36. var auth={
  37. productKey:"",
  38. deviceName:"",
  39. content:{
  40. type:"auth",
  41. access_token:access_token
  42. }
  43. };
  44. return {
  45. type:"action",
  46. data:{
  47. productKey:"",
  48. deviceName:"",
  49. state:""
  50. },
  51. action:{
  52. type:"ack",
  53. content:JSON.stringify(auth)
  54. }
  55. }
  56. }else if(data.type=="auth_ok"){
  57. return getPingData(data.heartBeatData);
  58. }else if(data.type=="pong"){
  59. apiTool.log("receive pong!");
  60. }else if("ping"==type){
  61. return getPingData(data.heartBeatData);
  62. }
  63. return {
  64. productKey:"",
  65. deviceName:"",
  66. mid:0,
  67. content:{
  68. }
  69. }
  70. };