123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- var myWebsocket = {
- websocket : null,
- clientPrefix : "",
- clientId : "",
- default : {
- type : "",
- url : "",
- onmessage : null,
- //将消息显示在网页上
- setConsoleOut : function setConsoleOut(innerHTML) {
- console.log(innerHTML);
- }
-
- },
- initWebsocket : function(data){
- var type = "";
- var setConsoleOut = null;
- var url = "";
- if(!data){
- alert("url is empty");
- return;
- }
- type = data.type ? data.type + "_" : myWebsocket.default.type;
- if(data.onmessage){
- myWebsocket.default.onmessage = data.onmessage;
- }
- myWebsocket.clientPrefix = "client_" + type;
- sessionStorage.clientPrefix = myWebsocket.clientPrefix;
- myWebsocket.clientId = myWebsocket.clientPrefix + Math.uuid().replace(/-/g,"");
- sessionStorage.clientId = myWebsocket.clientId;
- if(!data.url){
- alert("url is empty");
- return;
- }
- url = data.url + "/socketServer/" + myWebsocket.clientId;
- setConsoleOut = data.setConsoleOut ? data.setConsoleOut : myWebsocket.default.setConsoleOut;
-
- //判断当前浏览器是否支持WebSocket, 主要此处要更换为自己的地址
- if ('WebSocket' in window) {
- setConsoleOut(url);
- myWebsocket.websocket = new WebSocket(url);
- } else {
- setConsoleOut('Not support websocket');
- }
-
- //连接发生错误的回调方法
- myWebsocket.websocket.onerror = function() {
- setConsoleOut("error");
- };
-
- //连接成功建立的回调方法
- myWebsocket.websocket.onopen = function(event) {
- setConsoleOut("open");
- }
-
- //接收到消息的回调方法
- myWebsocket.websocket.onmessage = function(event) {
- setConsoleOut(event.data);
- if(myWebsocket.default.onmessage){
- myWebsocket.default.onmessage(event.data);
- }
- }
-
- //连接关闭的回调方法
- myWebsocket.websocket.onclose = function() {
- setConsoleOut("close");
- }
-
- //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
- window.onbeforeunload = function() {
- if(myWebsocket.websocket){
- myWebsocket.websocket.close();
- }
- }
- },
- sendWebsocket : function(message) {
- if(myWebsocket.websocket){
- console.log(message);
- myWebsocket.websocket.send(message);
- }
- },
- closeWebSocket : function () {
- if(myWebsocket.websocket){
- myWebsocket.websocket.close();
- }
- }
- };
- /*!
- Math.uuid.js (v1.4)
- http://www.broofa.com
- mailto:robert@broofa.com
- Copyright (c) 2010 Robert Kieffer
- Dual licensed under the MIT and GPL licenses.
- */
- /*
- * Generate a random uuid.
- *
- * USAGE: Math.uuid(length, radix)
- * length - the desired number of characters
- * radix - the number of allowable values for each character.
- *
- * EXAMPLES:
- * // No arguments - returns RFC4122, version 4 ID
- * >>> Math.uuid()
- * "92329D39-6F5C-4520-ABFC-AAB64544E172"
- *
- * // One argument - returns ID of the specified length
- * >>> Math.uuid(15) // 15 character ID (default base=62)
- * "VcydxgltxrVZSTV"
- *
- * // Two arguments - returns ID of the specified length, and radix. (Radix must be <= 62)
- * >>> Math.uuid(8, 2) // 8 character ID (base=2)
- * "01001010"
- * >>> Math.uuid(8, 10) // 8 character ID (base=10)
- * "47473046"
- * >>> Math.uuid(8, 16) // 8 character ID (base=16)
- * "098F4D35"
- */
- (function() {
- // Private array of chars to use
- var CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
- Math.uuid = function (len, radix) {
- var chars = CHARS, uuid = [], i;
- radix = radix || chars.length;
- if (len) {
- // Compact form
- for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random()*radix];
- } else {
- // rfc4122, version 4 form
- var r;
- // rfc4122 requires these characters
- uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
- uuid[14] = '4';
- // Fill in random data. At i==19 set the high bits of clock sequence as
- // per rfc4122, sec. 4.1.5
- for (i = 0; i < 36; i++) {
- if (!uuid[i]) {
- r = 0 | Math.random()*16;
- uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
- }
- }
- }
- return uuid.join('');
- };
- // A more performant, but slightly bulkier, RFC4122v4 solution. We boost performance
- // by minimizing calls to random()
- Math.uuidFast = function() {
- var chars = CHARS, uuid = new Array(36), rnd=0, r;
- for (var i = 0; i < 36; i++) {
- if (i==8 || i==13 || i==18 || i==23) {
- uuid[i] = '-';
- } else if (i==14) {
- uuid[i] = '4';
- } else {
- if (rnd <= 0x02) rnd = 0x2000000 + (Math.random()*0x1000000)|0;
- r = rnd & 0xf;
- rnd = rnd >> 4;
- uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
- }
- }
- return uuid.join('');
- };
- // A more compact, but less performant, RFC4122v4 solution:
- Math.uuidCompact = function() {
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
- var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
- return v.toString(16);
- });
- };
- })();
|