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 = "
抱歉,您的浏览器不支持某些重要特性,有些功能无法正常使用
";
$("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);
}