123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- var WebsocketConnect = function(wshost,fAutoConnect,fAutojoin,callbacks,room_msg,msg_handler)
- {
- if(!wshost) {
- return;
- }
- var socket= null;
- var fauto_connect = fAutoConnect;
- var fauto_join = fAutojoin;
- var is_connect = false;
- var meId = 0;
- 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 shake_bonus = function(val){
- var jsonobject = {
- op:"shake",
- room:room_msgs.room,
- room_key:room_msgs.roomkey,
- type:"shake_bonus",
- content:val
- };
- socket.send(JSON.stringify(jsonobject));
- };
- var login = function login()
- {
- var jsonobject = {
- op:"join",
- room:room_msgs.room,
- room_key:room_msgs.roomkey
- };
- socket.send(JSON.stringify(jsonobject));
- };
- var bargain = function(){
- var jsonobject = {
- op:"bargain",
- room:room_msgs.room,
- room_key:room_msgs.roomkey
- };
- socket.send(JSON.stringify(jsonobject));
- };
- var bargain_over = function () {
- var jsonobject = {
- op:"close",
- room:room_msgs.room,
- room_key:room_msgs.roomkey
- };
- socket.send(JSON.stringify(jsonobject));
- };
- var Close = function(){
- socket.close();
- };
- var reconnect = function(){
- setTimeout(function(){
- if(fauto_connect) {
- connect();
- }
- },1000);
- };
- function connect()
- {
- socket = null;
- if(window.WebSocket) {
- socket = new WebSocket(wshost);
- }
- else {
- console.log('您的设备不支持WebSocket');
- return;
- }
- socket.onopen = function()
- {
- webSocket_callbacks.onopen();
- if(fauto_join && is_connect) {
- login();
- }
- };
- socket.onerror = function(){
- console.log('error');
- };
- socket.onclose = function(e){
- console.log('onclose:'+ e);
- webSocket_callbacks.onclose();
- reconnect();
- };
- socket.onmessage = function(msg)
- {
- var datasJsonParse = JSON.parse(msg.data);
- var op = datasJsonParse.op;
- if(op == 'ret_join') {
- if( msg_handler.room_info) {
- msg_handler.room_info(datasJsonParse);
- }
- }
- else if(op == 'join') {
- if( msg_handler.join) {
- msg_handler.join(datasJsonParse)
- }
- }
- else if(op == 'message') {
- if(msg_handler.message) {
- msg_handler.message(datasJsonParse);
- }
- }
- else if(op == 'bargain'){
- msg_handler.message(datasJsonParse);
- }
- else if(op == 'ret_bargain') {
- msg_handler.message(datasJsonParse);
- }
- else if(op == 'bargain_close') {
- msg_handler.message(datasJsonParse);
- }
- };
- is_connect = true;
- }
- if(fauto_connect) {
- connect();
- }
- return {
- connect:connect,
- send:Send,
- shake_bonus:shake_bonus,
- login:login,
- close:Close,
- Json_parse:Json_parse,
- getMeId:meId,
- setMeId:function(id){
- meId = id;
- },
- bargain:bargain,
- bargain_over:bargain_over
- }
- };
|