huanggang vor 7 Jahren
Ursprung
Commit
4f0ec8498d
2 geänderte Dateien mit 181 neuen und 1 gelöschten Zeilen
  1. 129 0
      data/resource/mobile/comm/websocket.js
  2. 52 1
      mobile/templates/default/game/shake_bonus.php

+ 129 - 0
data/resource/mobile/comm/websocket.js

@@ -0,0 +1,129 @@
+var WebsocketConnect = function(addr,auto_connect,auto_join,callbacks,room_msg,msg_callback){
+
+    var socket= null;
+    var fauto_connect = auto_connect;
+    var fauto_join = auto_join;
+    var is_connect = false;
+    var webSocket_callbacks = {
+        onopen: callbacks.onOpen,
+        onerror: callbacks.onError,
+        onclose: callbacks.onClose
+    };
+
+    var room_msgs =  {
+        room    : room_msg.room,
+        roomkey : room_msg.roomkey
+    };
+
+    var Json_parse = function(json){
+        var datas = json;
+        var get_me = function(){
+            var me_id = datas.content.me;
+            var users = datas.content.users;
+            for(var i=0;i<users.length;i++) {
+                if(users[i].userid == me_id) {
+                    return users[i];
+                }
+            }
+        };
+        var get_all = function(){
+            return datas.content.users;
+        };
+
+        var get_msg = function(){
+            return datas.content.content;
+        };
+
+        var get_from = function() {
+            return datas.content.from;
+        };
+        return {
+            get_me:get_me,
+            get_all:get_all,
+            getDatas:datas,
+            get_msg:get_msg,
+            get_from:get_from
+        }
+    };
+
+    var Send = function(val){
+        var jsonobject = {
+            op:"message",
+            room:room_msgs.room,
+            room_key:room_msgs.roomkey,
+            type:"text",
+            content:val
+        };
+
+        socket.send(JSON.stringify(jsonobject));
+    };
+    var login = function login()
+    {
+        var jsonobject = {
+            op:"join",
+            room:room_msgs.room,
+            room_key:room_msgs.roomkey,
+            code:'bargain'
+        };
+        socket.send(JSON.stringify(jsonobject));
+    };
+    var Close = function(){
+        socket.close();
+    };
+
+    var connect = function(){
+        if(socket) {
+            return;
+        }
+        if(window.WebSocket) {
+            socket = new WebSocket(addr);
+        }
+        else {
+            console.log('您的设备不支持WebSocket');
+            return;
+        }
+
+        socket.onopen = function(){
+            webSocket_callbacks.onopen();
+            if(fauto_join && is_connect) {
+                login();
+            }
+        };
+        socket.onerror = function(){
+            webSocket_callbacks.onerror();
+        };
+        socket.onmessage = function(msg){
+            var datasJsonParse = JSON.parse(msg.data);
+            var msg_type = datasJsonParse.op;
+            if(msg_type == 'ret_join') {
+                if( msg_callback.room_info) {
+                    msg_callback.room_info(datasJsonParse);
+                }
+            }
+            if(msg_type == 'join') {
+                if( msg_callback.join) {
+                    msg_callback.join(datasJsonParse)
+                }
+            }
+            if(msg_type == 'message') {
+                if(msg_callback.message) {
+                    msg_callback.message(datasJsonParse);
+                }
+            }
+        };
+        socket.onclose = function(){
+            webSocket_callbacks.onclose();
+        };
+        is_connect = true;
+    };
+    if(fauto_connect) {
+        connect();
+    }
+    return {
+        connect:connect,
+        send:Send,
+        login:login,
+        close:Close,
+        Json_parse:Json_parse
+    }
+};

+ 52 - 1
mobile/templates/default/game/shake_bonus.php

@@ -7,6 +7,14 @@
     <title>摇一摇</title>
     <script src="<?php echo RESOURCE_SITE_URL; ?>/mobile/shake/js/flexible.js"></script>
     <link rel="stylesheet" href="<?php echo RESOURCE_SITE_URL; ?>/mobile/shake/css/main.css"/>
+    <style>
+        #achieve_box {
+            position: fixed;
+            left: 0;
+            bottom: 0;
+            width: 100%;
+        }
+    </style>
 </head>
 <body>
 <div class="maincontent">
@@ -24,12 +32,55 @@
     <audio src="<?php echo RESOURCE_SITE_URL; ?>/mobile/shake/mp3/success.mp3" id="shake_success"></audio>
     <div class="loading_icon"></div>
     <div class="results_box"></div>
+    <div id="achieve_box"></div>
 </div>
 
 <script type="text/javascript" src="<?php echo RESOURCE_SITE_URL; ?>/mobile/shake/js/zepto.min.js"></script>
 <script type="text/javascript" src="<?php echo RESOURCE_SITE_URL; ?>/mobile/comm/bridge.js"></script>
-
+<script type="text/javascript" src="<?php echo RESOURCE_SITE_URL; ?>/mobile/comm/websocket.js"></script>
 <script type="text/javascript">
+    var addr    = "ws://192.168.0.200:8080";
+    var room_msgs = {
+        room    : 31,
+        roomkey :"560e2abd007ea0ba5c7108edd061fc27"
+    };
+    var callbacks = {
+        onOpen:sOpen,
+        onError:sError,
+        onClose:sClose
+    };
+    var msg_type_callback = {
+        message:message
+    };
+    var websocket = new WebsocketConnect(addr,true,true,callbacks,room_msgs,msg_type_callback);
+
+    function sOpen(){
+        alert('连接成功!');
+    }
+    function sError(e){
+        alert('连接断开');
+    }
+    function sClose(e){
+        alert("connect closed:" + e.code);
+    }
+
+    function message(datas){
+        var jsonDatas = new websocket.Json_parse(datas);
+        var msg_type = datas.content.type;
+        try {
+            if(msg_type == 'text') {
+                var html = "<p class='achieve'><img class='send_avatar' src="+jsonDatas.get_from().avatar+">"+jsonDatas.get_from().nickname+"说:"+jsonDatas.get_msg()+"</p>";
+                document.getElementById('achieve_box').innerHTML += html;
+            };
+        }
+        catch (e) {
+            alert('消息类型错误');
+        }
+    }
+
+
+
+
     var shake_start   = document.getElementById('shake_start');
     var shake_null    = document.getElementById('shake_null');
     var shake_success = document.getElementById('shake_success');