socketConnect.js 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. var self = null;
  2. var socket = null;
  3. var docInfo = null;
  4. mui.plusReady(function(){
  5. self = plus.webview.currentWebview();
  6. docInfo = JSON.parse(plus.storage.getItem("docInfo"));
  7. connectSocket();
  8. });
  9. //判断是否有患者参与
  10. function connectSocket(){
  11. imClient.Sessions.getParticipants(self.sessionId, function(rs){
  12. var isPatient = false;
  13. $.each(rs , function(i, v) {
  14. if(v.is_patient==1){
  15. isPatient = true;//是否有患者
  16. }
  17. });
  18. createSocketConnect(isPatient);
  19. }, function(msg){
  20. console.log("e:"+JSON.stringify(msg))
  21. mui.toast("获取成员列表失败!");
  22. })
  23. }
  24. //加载socket组件 (连接socket)
  25. function createSocketConnect(isPatient){
  26. jQuery.getScript(socketUrl+"/socket.io/socket.io.js?"+Math.random()).done(function() {
  27. socket = io.connect(socketUrl);
  28. socket.emit('login', {userId: docInfo.code, password: docInfo.code,sessionId:sessionId,clientType:"doctor"});
  29. socket.on('message', function (data) {
  30. var p2pHtml = plus.webview.getWebviewById("p2p");
  31. var p2dzixunHtml = plus.webview.getWebviewById("p2dzixun");
  32. if((p2pHtml || p2dzixunHtml)){
  33. if(data.read){//已读消息
  34. if(data.read=="all"){//将消息全部置为已读
  35. if(!isPatient){//医生和医生对聊
  36. setTimeout(function(){
  37. $("#contain").find("dl.chat-right").find(".c-msg").find(".yidu").html("已读");
  38. },100)
  39. }else{//医生和居民对聊
  40. //$("#contain").find("dl.chat-right").find(".c-msg").find(".yidu").html("居民已读");
  41. // TODO "居民已读" 临时改为 "已读"
  42. setTimeout(function(){
  43. $("#contain").find("dl.chat-right").find(".c-msg").find(".yidu").html("已读");
  44. },100)
  45. }
  46. }
  47. if(data.read=="one"){
  48. if(!isPatient){//医生和医生对聊
  49. setTimeout(function(){
  50. $("#contain").find("dl.chat-right").last().find(".yidu").html("已读");
  51. },100)
  52. }else{//医生和居民对聊
  53. // $("#contain").find("dl").last().find(".yidu").html("居民已读");
  54. // TODO "居民已读" 临时改为 "已读"
  55. setTimeout(function(){
  56. $("#contain").find("dl.chat-right").last().find(".yidu").html("已读");
  57. },100)
  58. }
  59. }
  60. }else{
  61. // getNewMsgs(false);//消息接收
  62. var arr = [];
  63. arr.push(data);
  64. getNewMsgHandle( arr, false );
  65. }
  66. }else{//消息接收
  67. if(!data.read){
  68. getNewMsgs(false);
  69. }
  70. }
  71. });
  72. socket.on('error', function (data) {
  73. console.log(data);
  74. });
  75. socket.on('ack', function (data) {
  76. console.log(data);
  77. });
  78. function getLocalTime(nS) {
  79. return new Date(parseInt(nS) * 1000).toLocaleString().replace(/:\d{1,2}$/,' ');
  80. }
  81. plus.storage.setItem("imSocket",socket);
  82. plus.storage.setItem("imSessionId",sessionId);
  83. })
  84. .fail(function() {
  85. plus.nativeUI.toast("医生实时对话连接失败!",{duration:"long"});
  86. });
  87. }
  88. //断开socket连接
  89. function logoutSocketConnect(){
  90. socket.emit('logout');
  91. }