From dce87e28767f89cca856d62e52afce266ef7c4b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=B9=BF=E6=9D=B0?= Date: Thu, 23 Jul 2020 17:27:07 +0800 Subject: [PATCH 1/2] v1.0 --- composer.json | 3 +- configs/db.php | 6 +- configs/login.php | 6 +- configs/redis.php | 2 +- configs/webim.php | 4 +- resources/chatroom.html | 173 +++++++++++++ resources/index.html | 12 + resources/static/facebox/README.txt | 23 ++ resources/static/facebox/b.png | Bin 0 -> 84 bytes resources/static/facebox/bl.png | Bin 0 -> 124 bytes resources/static/facebox/br.png | Bin 0 -> 124 bytes resources/static/facebox/closelabel.gif | Bin 0 -> 979 bytes resources/static/facebox/facebox.css | 95 +++++++ resources/static/facebox/facebox.js | 189 ++++++++++++++ resources/static/facebox/loading.gif | Bin 0 -> 2767 bytes resources/static/facebox/tl.png | Bin 0 -> 132 bytes resources/static/facebox/tr.png | Bin 0 -> 125 bytes resources/static/js/chat.js | 1 - resources/static/js/test.js | 33 +++ resources/templates/chatroom.php | 327 ++++++++++++------------ src/Pool.php | 2 +- src/Server.php | 22 +- 22 files changed, 721 insertions(+), 177 deletions(-) create mode 100644 resources/chatroom.html create mode 100644 resources/index.html create mode 100644 resources/static/facebox/README.txt create mode 100644 resources/static/facebox/b.png create mode 100644 resources/static/facebox/bl.png create mode 100644 resources/static/facebox/br.png create mode 100755 resources/static/facebox/closelabel.gif create mode 100644 resources/static/facebox/facebox.css create mode 100644 resources/static/facebox/facebox.js create mode 100755 resources/static/facebox/loading.gif create mode 100644 resources/static/facebox/tl.png create mode 100644 resources/static/facebox/tr.png create mode 100644 resources/static/js/test.js diff --git a/composer.json b/composer.json index 4df0562..96c4fb4 100755 --- a/composer.json +++ b/composer.json @@ -2,6 +2,7 @@ "require": { "matyhtf/framework": ">=3.0.0", "symfony/console": "^4.3", - "swoole/ide-helper": "~4.4.7" + "swoole/ide-helper": "~4.4.7", + "ext-json": "*" } } diff --git a/configs/db.php b/configs/db.php index 3a377c1..ad78d15 100755 --- a/configs/db.php +++ b/configs/db.php @@ -1,14 +1,14 @@ SPF\Database::TYPE_MYSQLi, - 'host' => "127.0.0.1", + 'host' => "mysql", 'port' => 3306, 'dbms' => 'mysql', - 'engine' => 'MyISAM', + 'engine' => 'InnoDB', 'user' => "root", 'password' => "root", 'database' => "webim", - 'charset' => "utf8", + 'charset' => "utf8mb4", 'setname' => true, 'persistent' => false, //MySQL长连接 ); diff --git a/configs/login.php b/configs/login.php index 7000880..375e7f5 100755 --- a/configs/login.php +++ b/configs/login.php @@ -1,6 +1,6 @@ BASE_URL . '/api/get_user_info/', - 'passport' => BASE_URL.'/page/login/', + 'get_user_info' => BASE_URL . '/api/get_user_info', + 'passport' => BASE_URL.'/page/login', ); \ No newline at end of file diff --git a/configs/redis.php b/configs/redis.php index b62bace..d01a61c 100755 --- a/configs/redis.php +++ b/configs/redis.php @@ -1,5 +1,5 @@ '127.0.0.1', + 'host' => 'redis', ); return $redis; \ No newline at end of file diff --git a/configs/webim.php b/configs/webim.php index 814e5df..00868e7 100755 --- a/configs/webim.php +++ b/configs/webim.php @@ -1,13 +1,13 @@ '127.0.0.1', + 'host' => '0.0.0.0', //监听的端口 'port' => '9503', //WebSocket的URL地址,供浏览器使用的 'url' => 'ws://127.0.0.1:9503', //用于Comet跨域,必须设置为html所在的URL - 'origin' => 'http://im.swoole.com:8888', + 'origin' => 'http://127.0.0.1:9503', ); $config['swoole'] = array( diff --git a/resources/chatroom.html b/resources/chatroom.html new file mode 100644 index 0000000..0dd930b --- /dev/null +++ b/resources/chatroom.html @@ -0,0 +1,173 @@ + + + +Swoole-WebIM + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ + + + +
+
+
+ + +
+
+ + + + +
+
+ +
+
+ + + +
+ + + +
+
+
+ + +
+
+
+
+ + + + + +
+
+ +
    +
+
+
+
+ +
+
+ + + +
+ + + diff --git a/resources/index.html b/resources/index.html new file mode 100644 index 0000000..080606e --- /dev/null +++ b/resources/index.html @@ -0,0 +1,12 @@ + + + + + Title + + + + + + + \ No newline at end of file diff --git a/resources/static/facebox/README.txt b/resources/static/facebox/README.txt new file mode 100644 index 0000000..56bf703 --- /dev/null +++ b/resources/static/facebox/README.txt @@ -0,0 +1,23 @@ +Facebox for Prototype, version 2.0 +By Robert Gaal - http://wakoopa.com +-------------------------------------------------------------------------- + +Heavily based on Facebox by Chris Wanstrath - http://famspam.com/facebox +First ported to Prototype by Phil Burrows - http://blog.philburrows.com + +Licensed under the MIT: +http://www.opensource.org/licenses/mit-license.php + +Need help? Join the Google Groups mailing list: +http://groups.google.com/group/facebox/ + +-------------------------------------------------------------------------- + +Dependencies: prototype & script.aculo.us + images & CSS files from original facebox +Usage: Append 'rel="facebox"' to an element to call it inside a so-called facebox. + + You can also call it directly through the following code: + + facebox.loading(); + facebox.reveal('Facebox contents here', null); + new Effect.Appear(facebox.facebox, {duration: .3}); \ No newline at end of file diff --git a/resources/static/facebox/b.png b/resources/static/facebox/b.png new file mode 100644 index 0000000000000000000000000000000000000000..f184e6269b343014f58694093b55558dd5dde193 GIT binary patch literal 84 zcmeAS@N?(olHy`uVBq!ia0vp^fG6i5I7 literal 0 HcmV?d00001 diff --git a/resources/static/facebox/bl.png b/resources/static/facebox/bl.png new file mode 100644 index 0000000000000000000000000000000000000000..f6271859d51654b6fb2719df5fe192c8398ecefc GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4IeWS|hDcma=HTLr;y)tIk;ta7 zu_vN6xFht2)0#siNuslamwx#F|G&b~zelu8RJ{}@J*sQsnrJe^+4cq#uT_A>dUgiy Xt!wnnwn>Kojbre1^>bP0l+XkK7z`$3 literal 0 HcmV?d00001 diff --git a/resources/static/facebox/br.png b/resources/static/facebox/br.png new file mode 100644 index 0000000000000000000000000000000000000000..31f204fc451cd9dd5cfdadfad2d86ed0e1104882 GIT binary patch literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4IeWS|hDc29J+)AjL4m_HaN4IG z$D^BEUx=k`c-1!J#J_^urVqIKIty1DUX{oyG4)ejx5`MhFFt0jm0SWdC(DBaZ!X9M X+pW>R{=Die&^QK9S3j3^P6E z)6+9$%9N0hkg%|@J9q8`1qGcvc``6CFd`x%G&JWG1!QZ}p`}_Crt5>gn{ra_R z*|PBP@I{Lj`S|$w`}?P*rG5YY{qEhnXU?2SNJyxzu3ors;h#T$K79Ca@7}$foSdy& zxBmY9d+OAwXV0EJb?Q__MaApauf4s!A3S&vA0NMS=g#~0?{C?%rLC>4pr9Z*Ir-_+ zr;{d4>gecLxpHM*Uf%TS)ARH5uU@^{*Vp&5E2E;KQc_ZUeSM3Ii__E7r%jvI-roNB@nb(fzs$_c+qZ95RaO1} z|Nq~=e++a1ia%Mv_UM2}P@FKZ|8IzCYHn$5Ywzgn>h9_7>+gx3Gn5iiIZY<+?`^k#V9jLtyr*r!J=422f09{b+Ju)CUT+TQ$(XUHpFrqp3WW>wX1uv zuMxADYt*_`D!j~cc9U4RqaSdy#4<#mnaaTWAexn73fF5^{TRmAubUT3M$0pEhL|XZa-W~L|(gBwDDiyC{R^)5V?SdhX{^V3U3;)26b z9`PG&9vg+2LK~Ub)t*kN@Dpm%WzyoDVKHUWf+~JK$+ZDZ@~kR1)Kp$5Zt9+<`%Y)- z>yw)=g|fzKY2BzS@eXpHy5ookQ(^-%AM<|&o|T%JuT^(X?uuf%wX|uMuC&0ET*U<& zn5MV|N-Q);aBAjTtM<^<-0=N0@0#5*3?I(E@i^2b=>KSu3P#TbT%XyyED9)8M!}zkkRC?kPTh mHXNSne@Ka2Tq>lLlg+!}=2PuWCXYMo(tpiJ>u+RWum%8KFq1q0 literal 0 HcmV?d00001 diff --git a/resources/static/facebox/facebox.css b/resources/static/facebox/facebox.css new file mode 100644 index 0000000..1529036 --- /dev/null +++ b/resources/static/facebox/facebox.css @@ -0,0 +1,95 @@ +#facebox .b { + background:url(b.png); +} + +#facebox .tl { + background:url(tl.png); +} + +#facebox .tr { + background:url(tr.png); +} + +#facebox .bl { + background:url(bl.png); +} + +#facebox .br { + background:url(br.png); +} + +#facebox { + position: absolute; + top: 0; + left: 0; + z-index: 100; + text-align: left; +} + +#facebox .popup { + position: relative; +} + +#facebox table { + border-collapse: collapse; +} + +#facebox td { + border-bottom: 0; + padding: 0; +} + +#facebox .body { + padding: 10px; + background: #fff; + width: 370px; +} + +#facebox .loading { + text-align: center; +} + +#facebox .image { + text-align: center; +} + +#facebox img { + border: 0; + margin: 0; +} + +#facebox .footer { + border-top: 1px solid #DDDDDD; + padding-top: 5px; + margin-top: 10px; + text-align: right; +} + +#facebox .tl, #facebox .tr, #facebox .bl, #facebox .br { + height: 10px; + width: 10px; + overflow: hidden; + padding: 0; +} + +#facebox_overlay { + position: fixed; + top: 0px; + left: 0px; + height:100%; + width:100%; +} + +.facebox_hide { + z-index:-100; +} + +.facebox_overlayBG { + background-color: #000; + z-index: 99; +} + +* html #facebox_overlay { /* ie6 hack */ + position: absolute; + height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'); +} diff --git a/resources/static/facebox/facebox.js b/resources/static/facebox/facebox.js new file mode 100644 index 0000000..43dafa6 --- /dev/null +++ b/resources/static/facebox/facebox.js @@ -0,0 +1,189 @@ +/* Facebox for Prototype, version 2.0 + * By Robert Gaal - http://wakoopa.com + * + * Heavily based on Facebox by Chris Wanstrath - http://famspam.com/facebox + * First ported to Prototype by Phil Burrows - http://blog.philburrows.com + * + * Licensed under the MIT: + * http://www.opensource.org/licenses/mit-license.php + * + * Need help? Join the Google Groups mailing list: + * http://groups.google.com/group/facebox/ + * + * Dependencies: prototype & script.aculo.us + images & CSS files from original facebox + * Usage: Append 'rel="facebox"' to an element to call it inside a so-called facebox + * + *--------------------------------------------------------------------------*/ + + +var Facebox = Class.create({ + initialize : function(extra_set){ + this.settings = { + loading_image : '/facebox/loading.gif', + close_image : '/facebox/closelabel.gif', + image_types : new RegExp('\.' + ['png', 'jpg', 'jpeg', 'gif'].join('|') + '$', 'i'), + inited : true, + facebox_html : '\ + ' + }; + if (extra_set) Object.extend(this.settings, extra_set); + $(document.body).insert({bottom: this.settings.facebox_html}); + + this.preload = [ new Image(), new Image() ]; + this.preload[0].src = this.settings.close_image; + this.preload[1].src = this.settings.loading_image; + + f = this; + $$('#facebox .b:first, #facebox .bl, #facebox .br, #facebox .tl, #facebox .tr').each(function(elem){ + f.preload.push(new Image()); + f.preload.slice(-1).src = elem.getStyle('background-image').replace(/url\((.+)\)/, '$1'); + }); + + this.facebox = $('facebox'); + this.keyPressListener = this.watchKeyPress.bindAsEventListener(this); + + this.watchClickEvents(); + fb = this; + Event.observe($$('#facebox .close').first(), 'click', function(e){ + Event.stop(e); + fb.close() + }); + Event.observe($$('#facebox .close_image').first(), 'click', function(e){ + Event.stop(e); + fb.close() + }); + }, + + watchKeyPress : function(e){ + // Close if espace is pressed or if there's a click outside of the facebox + if (e.keyCode == 27 || !Event.element(e).descendantOf(this.facebox)) this.close(); + }, + + watchClickEvents : function(e){ + var f = this; + $$('a[rel=facebox]').each(function(elem,i){ + Event.observe(elem, 'click', function(e){ + Event.stop(e); + f.click_handler(elem, e); + }); + }); + }, + + loading : function() { + if ($$('#facebox .loading').length == 1) return true; + + contentWrapper = $$('#facebox .content').first(); + contentWrapper.childElements().each(function(elem, i){ + elem.remove(); + }); + contentWrapper.insert({bottom: '
'}); + + var pageScroll = document.viewport.getScrollOffsets(); + this.facebox.setStyle({ + 'top': pageScroll.top + (document.viewport.getHeight() / 10) + 'px', + 'left': document.viewport.getWidth() / 2 - (this.facebox.getWidth() / 2) + 'px' + }); + + Event.observe(document, 'keypress', this.keyPressListener); + Event.observe(document, 'click', this.keyPressListener); + }, + + reveal : function(data, klass){ + this.loading(); + load = $$('#facebox .loading').first(); + if(load) load.remove(); + + contentWrapper = $$('#facebox .content').first(); + if (klass) contentWrapper.addClassName(klass); + contentWrapper.insert({bottom: data}); + + $$('#facebox .body').first().childElements().each(function(elem,i){ + elem.show(); + }); + + if(!this.facebox.visible()) new Effect.Appear(this.facebox, {duration: .3}); + this.facebox.setStyle({ + 'left': document.viewport.getWidth() / 2 - (this.facebox.getWidth() / 2) + 'px' + }); + + Event.observe(document, 'keypress', this.keyPressListener); + Event.observe(document, 'click', this.keyPressListener); + }, + + close : function(){ + new Effect.Fade('facebox', {duration: .3}); + }, + + click_handler : function(elem, e){ + this.loading(); + Event.stop(e); + + // support for rel="facebox[.inline_popup]" syntax, to add a class + var klass = elem.rel.match(/facebox\[\.(\w+)\]/); + if (klass) klass = klass[1]; + + new Effect.Appear(this.facebox, {duration: .3}); + + if (elem.href.match(/#/)){ + var url = window.location.href.split('#')[0]; + var target = elem.href.replace(url+'#',''); + // var data = $$(target).first(); + var d = $(target); + // create a new element so as to not delete the original on close() + var data = new Element(d.tagName); + data.innerHTML = d.innerHTML; + this.reveal(data, klass); + } else if (elem.href.match(this.settings.image_types)) { + var image = new Image(); + fb = this; + image.onload = function() { + fb.reveal('
', klass) + } + image.src = elem.href; + } else { + var fb = this; + var url = elem.href; + new Ajax.Request(url, { + method : 'get', + onFailure : function(transport){ + fb.reveal(transport.responseText, klass); + }, + onSuccess : function(transport){ + fb.reveal(transport.responseText, klass); + } + }); + + } + } +}); + +var facebox; +document.observe('dom:loaded', function(){ + facebox = new Facebox(); +}); \ No newline at end of file diff --git a/resources/static/facebox/loading.gif b/resources/static/facebox/loading.gif new file mode 100755 index 0000000000000000000000000000000000000000..f864d5fd38b7466c76b5a36dc0e3e9455c0126e2 GIT binary patch literal 2767 zcmeH``%_bA0*1eHPVNawNVtR;Fkp-nQj8edfS`v<5L7TgR6wi;WfgH-0}4fE+c_uU zB6tf6auF}FAcDdgg|bMU&H)LR5jARM!8$tuwd$nHqS?K-=JNZ+yGvz=Iegxp{+qWGZ9j{-%9vvN>n3$NJp6==CAqYaF(LfM1Z{EEA{{Gt9 z+Ba|B7z_sR+xabl|E~mm-*OXmhLq??y)HONjX>1ze1D?RIn=G1`RR-%fb}zgSh6^a z(}Zw20U1L^Cs9UcyJfc+al#}J2xVlYUoR{`gd&QDxAb1w4>I~5gc?ccq(G+T!I;H};U_uyHR0@hr>Qk1P1=6fvUBhR zb|&^^cEQtu&W}=-=YR7o5UI)AD*~%J7bkVd5`xrdw{bHm;|Bf^_|FG$9l}`ruhnVF zO%=6X*I#yro*pmfB;-A0cVjz73Qy)`oa=df_3Bx6!M3TNALf9BwI*di`jhdovR(I= zFT31zui1Xw??+Ym-lWNq=V6~8tt012$@*hy3So0QNJ#eIJ4Yh{qJ+aTY>ng8W1p4BrwB_>i7AY-xmGrA}hAeq`aX(yx~=c&|=$w&*&PpKd;G@@0oXK@D0x=;tyY&Eb|HKPsM z71v`PO)na3pfO*xUD8Z|CQju)c+RSAH=5V^4vb9Q2JwHwt|-INt|!nD?AlRxF5ZT8 zaA9~hGb$~rMhQh_0+31$tkzyLi>X3c7>F!|Jyn`+5{LG=E`sIQbHA8!=`uday6D6Y zNtVL?j^`6A%UuwO!`}j#s~H?w=P<5}Z2)*PPx|5q$MM+1K6_d_cie9JVArbrB2sRy zOl**1Mc+|zLM>munG#O|##RApuODr^1+pL-?SHX+D6Dz_@%-Oo(fM&hHYZ-jWU5jf z&nBYG;>F6&Y`veoLdZ@0WyrDsuXOP)9g*C`A(+R`Ryc2+9w_DJNaf@Dzg?~N{uI_} zjV(!yygvrGv#KF*Mt{6H^v1Ve=hQyF2^E~bd#&iZg;(%dS^nM;oGSF1Y^&rY}Ian zFrp%SBGPyN{Z?t%Mo#!qgLQ2)k{>KAv?=zezKN*qPRf>^4QjcWgyxiC}7Vb6vGrBLR(1J&B%*gb{`!Jljb^2%jB$ zFBNUHANC6Q?0~M}cVtgk_;_DAB-BE?2dP z(C9OIXza3Ao-@UyqX%`5cjg#cHl!uHq;&?~JO{eE+A2KSSD)s8v&CiV$kV$A=DG@i z;6JY7z*8oPdj@bbJQoTAENW#ls(ucbGA#yhN>zbWqBTbLl>rGqOAY+` z=psSt8VQE=9+X8^$l@oeDzRvja79ry3nvLcOR7+)bIFyJVoz4}URM-47_u>V zY*^e(o`?|l++*Y0uQ#&dKapW1o?J{jx+*_gKV^cW+W87KI7hZ5viXv$$=1IR^Z~yA XWBrHU7iSEP8X8hQyAJO{V6g1pwSv80 literal 0 HcmV?d00001 diff --git a/resources/static/facebox/tl.png b/resources/static/facebox/tl.png new file mode 100644 index 0000000000000000000000000000000000000000..d99c8f6c6eaa12d7b49a20f41f08a5006f3ea8b7 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4d3(AzhE&|@J-3jTL4n65aGKJa zi>kXgB~~zHg^Zp{CM0mn90WqNOPra}*Z0{kiIv{o~-b=GT*r10o|L fZ$xJ3$neauD_x^sx!G?E&{zgfS3j3^P6f4xp=xbhE&|@J+)AfL4k+GVA`V_ zi@i$(ZI&5dnZ|p1@qvOp9o~Wy8Q7coxO9zA=N|uQu;Ab0z?&8~c9@!JNn1 - -Swoole-WebIM - - - - - - - - - - - - - - - - + + - - -
-
-
- - -
- - + +
+ +
+
+
+ +
+
+
+ + +
+ + + + +
+
+
+ + +
+
+ + + + +
+
+ +
- --> - - -
-
-
- - -
-
- - - - -
-
- -
-
- - - -
- - - -
-
-
+ + + +
+ + + +
+ +
- -
- -
-
- - - - - -
-
- -
    -
-
-
-
- -
-
- - - -
+ rows="3" cols="500" contentEditable="true"> + +
+ +
+ + + + + + +
+
+ +
    +
+
+
+
+ + + + + + + + diff --git a/src/Pool.php b/src/Pool.php index f44b60f..10bf67b 100755 --- a/src/Pool.php +++ b/src/Pool.php @@ -14,7 +14,7 @@ class Pool /** * @param int $size 连接池的尺寸 */ - function __construct($config, $size = 100) + function __construct($config, $size = 10) { $this->pool = new Swoole\Coroutine\Channel($size); $this->config = $config; diff --git a/src/Server.php b/src/Server.php index 071ac49..7786f30 100755 --- a/src/Server.php +++ b/src/Server.php @@ -50,6 +50,11 @@ function getSession($req, $resp) //已登录 if (!empty($session['isLogin'])) { goto _success; + } else { + $session['isLogin'] = true; + $session['user'] = ['name' => $session_key, 'nickname' => $session_key, 'avatar' => '/static/img/face/15.gif']; + $redis->set($redis_key, serialize($session)); + goto _success; } if (empty($req->get['token'])) { @@ -90,6 +95,19 @@ function run() $resp->redirect('/chatroom'); } }); + // 登录 + $server->handle('/page/login', function ($req, $resp) use ($config) { + $return_token = $req->get['return_token']; + $refer = $req->get['refer']; + $token = md5(time()); + $resp->redirect($refer . '?token=' . $token); + }); + + // 获取用户信息 + $server->handle('/api/get_user_info', function ($req, $resp) use ($config) { + $token = $req->get['token']; + $resp->end(json_encode(['name' => $token, 'avatar' => '/static/img/face/15.gif'])); + }); $server->handle('/chatroom', function ($req, $resp) use ($config) { $session = $this->getSession($req, $resp); @@ -447,7 +465,7 @@ function login($session_id, $info) { $this->redis->set(self::PREFIX . ':client:' . $session_id, json_encode($info)); $this->redis->sAdd(self::PREFIX . ':online', $session_id); - $this->users[$session_id] = $resMsg; + $this->users[$session_id] = $info; } function logout($session_id) @@ -516,7 +534,7 @@ function addHistory($userid, $msg) $log['time'] = time(); $log['type'] = empty($msg['type']) ? '' : $msg['type']; - $_msg = $this->db->escape(json_encode($msg)); + $_msg = Filter::escape(json_encode($msg)); $_type = empty($msg['type']) ? '' : $msg['type']; $sql = "insert into ".self::PREFIX."_history( From d1781da158ac81d3c51349f0392e65305c0403c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=B9=BF=E6=9D=B0?= Date: Thu, 23 Jul 2020 17:59:53 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=9D=99=E6=80=81html?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/chatroom.html | 173 ---------------------------------------- resources/index.html | 12 --- 2 files changed, 185 deletions(-) delete mode 100644 resources/chatroom.html delete mode 100644 resources/index.html diff --git a/resources/chatroom.html b/resources/chatroom.html deleted file mode 100644 index 0dd930b..0000000 --- a/resources/chatroom.html +++ /dev/null @@ -1,173 +0,0 @@ - - - -Swoole-WebIM - - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- - - - -
-
-
- - -
-
- - - - -
-
- -
-
- - - -
- - - -
-
-
- - -
-
-
-
- - - - - -
-
- -
    -
-
-
-
- -
-
- - - -
- - - diff --git a/resources/index.html b/resources/index.html deleted file mode 100644 index 080606e..0000000 --- a/resources/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - Title - - - - - - - \ No newline at end of file