123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268 |
- var clientId = new Date().getTime().toString();
- var client = new Paho.MQTT.Client(window.juli.MQTT,window.juli.MQTTPORT, clientId);
- // set callback handlers
- client.onConnectionLost = onConnectionLost;
- var onConnectCallback;
- function onConnect(){
- // Once a connection has been made, make a subscription and send a message.
- console.log("onConnect");
- //alert("onConnect");
- if(window.deviceId != ""){
- client.subscribe("storybox/"+window.deviceId+"/client");
- //client.subscribe("storybox/"+window.deviceId+"/server");
- }
- //询问设备是否在线
- //var objCmd = {cmd:"getOnlineStatus"};
- //clientPublish(objCmd);
- //alert(window.deviceId);
- if(onConnectCallback)
- onConnectCallback();
- //支持离线消息,clearSession=false外,还必须订阅时qos=1
- //client.subscribe('12345',{qos:1});
- }
- function onFailure(){
- var date = new Date();
- console.log(date+" failure,try to reclient");
- clientConnect();
- }
- function onConnectionLost(){
- clientConnect();
- }
- function onMessageDelivered(message){
- alert("发送成功");
- }
- //function onMessageArrived(message){
- // alert(message.payloadString);
- //}
- function clientCreate(onConnectCallback){
- if(WebSocketCheck()){
- client.onMessageArrived = onMessageArrived;
- onConnectCallback = onConnectCallback;
- clientConnect();
- }
- else{
- var html = "<div class=\"alert alert-danger notSupportWebSocket\"><span>抱歉,您的浏览器不支持某些重要特性,有些功能无法正常使用</span></div>";
- $("body").find("div").eq(0).before(html);
- }
- }
- function clientConnect(){
- // connect the client
- try{
- client.connect({
- cleanSession:false,
- onSuccess:onConnect,
- onFailure:onFailure
- });
- }
- catch(error){
- console.log(error);
- }
- }
- function clientPublish(obj){
- if(WebSocketCheck()){
- var s = JSON.stringify(obj); //message is object ,like {cmd:"download",track:{url:play_url_32,title:trackId}}
- console.log(s);
- //alert(s);
- if(window.deviceId != ""){
- //var bytes = str2ab(s);
- var message = new Paho.MQTT.Message(s);
- //message = new Paho.MQTT.Message("hello");
- var topic = "storybox/"+window.deviceId+"/server/page";
- //alert(topic);
- message.destinationName = topic;
- try{
- console.log()
- client.send(message);
- }
- catch(error){
- console.log(error);
- }
- }
- }
- }
- function WebSocketCheck()
- {
- if ("WebSocket" in window)
- return true;
- else
- return false;
- }
- function onMessageArrived(message){
- console.log("onMessageArrived:"+message.payloadString);
- try{
- var obj = JSON.parse(message.payloadString);
- console.log(obj);
- if(obj.hasOwnProperty("onlineStatus")){
- if(onlineStatus_change)
- onlineStatus_change(obj.onlineStatus);
- }
- else if(obj.hasOwnProperty("boxInfo")){
- if(showBoxInfo)
- showBoxInfo(obj.boxInfo);
- }
- else if(obj.hasOwnProperty("volume")){
- if(currentVolumeDisplay)
- currentVolumeDisplay(obj.volume);
- }
- else if(obj.hasOwnProperty("trackListId") && obj.hasOwnProperty("trackId") && obj.hasOwnProperty("type")){
- if(playTrack_change)
- playTrack_change(obj.trackListId,obj.trackId,obj.type);
- }
- else if(obj.hasOwnProperty("playStatus")){
- if(playStatus_change)
- playStatus_change(obj.playStatus);
- }
- else if(obj.hasOwnProperty("mode")){
- if(mode_change)
- mode_change(obj.mode);
- }
- else if(obj.hasOwnProperty("downloadStatus") && obj.hasOwnProperty("trackId")){
- if(after_download)
- if(after_download)
- after_download(obj.downloadStatus,obj.trackId);
- }
- else if(obj.hasOwnProperty("configWifi")){
- if(onConfigWifi)
- onConfigWifi(obj.configWifi);
- }
- else if(obj.hasOwnProperty("playSinVoiceUrl") && obj.hasOwnProperty("openId")){
- console.log("------------------------------------");
- if(playSinVoiceUrl)
- playSinVoiceUrl(obj.playSinVoiceUrl,obj.openId);
- }
- else if(obj.hasOwnProperty("cmd") && obj.hasOwnProperty("trackListId") && obj.hasOwnProperty("trackIds")){
- if(obj.cmd == "initialTrackList" && startInitialTrackList)
- startInitialTrackList(obj.trackListId,obj.trackIds);
- }
- }
- catch(e){
- console.log(e);
- }
- }
- /*********************************发消息*************************************/
- //播放当前歌曲
- function playTrack(trackListId,trackId,url,downloadUrl){
- var cmdObj = {cmd:"playTrack",trackListId:trackListId,trackId:trackId,url:url,downloadUrl:downloadUrl};
- clientPublish(cmdObj);
- }
- //下一首
- function forwardTrack(){
- var cmdObj = {cmd:"forward"};
- clientPublish(cmdObj);
- }
- //上一首
- function backwardTrack(){
- var cmdObj = {cmd:"backward"};
- clientPublish(cmdObj);
- }
- //暂停
- function pauseTrack(){
- var cmdObj = {cmd:"pause"};
- clientPublish(cmdObj);
- }
- //继续播放
- function resumeTrack(){
- var cmdObj = {cmd:"resume"};
- clientPublish(cmdObj);
- }
- //询问当前播放歌曲
- function queryTrack(){
- var cmdObj = {cmd:"getTrack"};
- clientPublish(cmdObj);
- }
- //询问当前播放状态
- function queryPlayStatus(){
- var cmdObj = {cmd:"getPlayStatus"};
- clientPublish(cmdObj);
- }
- //询问当前播放模式
- function queryMode(){
- var cmdObj = {cmd:"getMode"};
- clientPublish(cmdObj);
- }
- //设置列表循环
- function setRepeatall(){
- var cmdObj = {cmd:"setMode",value:"repeat all"};
- clientPublish(cmdObj);
- }
- //设置单曲循环
- function setRepeatone(){
- var cmdObj = {cmd:"setMode",value:"repeat one"};
- clientPublish(cmdObj);
- }
- //远程关机
- function cmd_poweroff(){
- var cmdObj = {cmd:"setPoweroff"};
- clientPublish(cmdObj);
- }
- //设置音量
- function cmd_setvolume(value){
- var cmdObj = {cmd:"setVolume",value:value};
- clientPublish(cmdObj);
- }
- //主动询问是否在线
- function getOnlineStatus(){
- var cmdObj = {cmd:"getOnlineStatus"};
- clientPublish(cmdObj);
- }
- //主动询问设备信息
- function getBoxInfo(){
- var cmdObj = {cmd:"getBoxInfo"};
- clientPublish(cmdObj);
- }
- //升级指令
- function boxUpgrade(versionName,firmwareUrl){
- var cmdObj = {cmd:"upgrade",versionName:versionName,firmwareUrl:firmwareUrl};
- clientPublish(cmdObj);
- }
- //询问设备初始列表内容
- function getInitialTrackList(trackListId){
- trackListId=parseInt(trackListId);
- var cmdObj = {cmd:"getInitialTrackList",trackListId:trackListId};
- clientPublish(cmdObj);
- }
- //播放一个trackId的数组,不含url
- function playTracks(trackIds){
- var cmdObj = {cmd:"playTracks",trackIds:trackIds};
- clientPublish(cmdObj);
- }
|