From 9b62ec73365995a69bc63fa23a2ddbce43e1439b Mon Sep 17 00:00:00 2001 From: Ben Burlingham Date: Tue, 14 Jul 2020 19:46:14 -0700 Subject: [PATCH] Adding to public-facing deploy. --- README.txt => README.md | 8 ++----- assets/avatar.png | Bin 0 -> 30407 bytes assets/gas-giant.png | Bin 31197 -> 0 bytes client/connection.js | 3 ++- server/ricochet.js | 2 +- socket/messenger.js | 48 ------------------------------------- socket/server.js | 52 ---------------------------------------- 7 files changed, 5 insertions(+), 108 deletions(-) rename README.txt => README.md (84%) create mode 100644 assets/avatar.png delete mode 100644 assets/gas-giant.png delete mode 100644 socket/messenger.js delete mode 100644 socket/server.js diff --git a/README.txt b/README.md similarity index 84% rename from README.txt rename to README.md index 1f12615..97f9d3e 100644 --- a/README.txt +++ b/README.md @@ -9,14 +9,10 @@ Any movement, including initial locations, is represented by pushing or popping A victory state can be stored by taking a snapshot of the current stack. -## Credit +## Credits Icons from [https://game-icons.net](https://game-icons.net) ## TODO -- chat box - walls and winstate algorithm - tutorial - -# Final install -- move websocket server to /core -- dynamic socket server resolution +- restore name prompt1 diff --git a/assets/avatar.png b/assets/avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..b4a67c89a24697487834cf293d8dbd2e489506df GIT binary patch literal 30407 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%0A$; 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%0A2%AyXo6ROrnQuQCi?|tHbb`Gm zl2J*wqIc?r+yYZ+P;Xs_y$V(}>>>nW8=C{vo>uwFU zUid7v0rZ=(S9r}eh_*~$qe#0nQb51jQI9t7%0yjU$$~Opx8}~B>tV5mCW}T3kpc!c z3(}3PC$=e}eB1v>UiHO&;RjhgVmE%U1{KSVTOf5FW3;`J+Fy9}dG=PL&Lc~Uu>)*_ zV(WL6*hW`F8?Hq%SO{Fਭ)~}64k)uA>u*lX?@|8>LP5;z@u$>6~5Z5Xr-qc-J zY{OU+V)+ciIs&5hnXH~#)~!QmAXQ!5tYLY@Su&l^ zxMuKGcX)n(#CpHS`1OqOX|d>>8`nw%g#>A0EFbP6Lqte|@N_{qT|w&#*-cnK+@T!z z;OmNbnh{R3HjFxBFzQX?0&mi-LV}Efk{5*%DF9&r3&7HK)QNEY=^LygwR)*2HDRC$ z`%foRP`b$gBa5bvOc7-2IsuRl1J)1s$a`gqa>^J^GlnlGB?R7h=Sn{m(wV4ZQ&H+b z7*?H#jkK=BO}5FwthEt|j?rdny7rzqEbgX`+|B*V5DLIMg0UqDhP8zxG3UPQ%djsups3b zfd`Nff~Ppf7B7;tRgh-AZy|(nM3e|B1!+GZ9Vc)u7#=RV*r!1cNoM5bs)27D!9^S3 zzMkd}2V8&l7QC#OKA#YtugHf9^UvNvAQ-=#Fn&4db0&a(`=9)&%JN+FRsPs4gw%HZiwk45ME6GC%4p?l2%_op-YS^n;=)M>T2) zkE%hy{T+}Jrq5@Tff477fQakzfb}>6`vc=WBBrnAdJj{h@lP(s^hoK`$-lbnJ{%@rPEfa z=)Ad2iqhOmN+7KJi2UvzWsKld5S}kseofzLoV6L84mt{&O2P1S#_;J0^P36f?ugxA z`~d7HT;CrxLhtv@5#QCAq6Q%2^A*$60$FBo7;u>%P+&h}>}6h7gkk+V(PaPtAOJ~3 zK~#@8?y=6#D3rJ_KRh5_R;;J5z&N3#8M2!Y z)`DR;LZ~34V10K)dV6={2~00s@<{~4Rf7Zl_W%4x;v>nzWyL@v()}JXMqNN|JHM_~ zqfWV?NYdGZC!LcwzthD#e0@f^tXM}t?(dcFzpj;{P^JNSQfe}&U} zVfgffcwXxWUl<0zj)X!5r4$edfd?=L?XKI<8VLam0X^yLNlZU-4B;Cw<{1O!GQslEkdJ(`kK zXA}`3*E90{5%aHqL@_5x^6}rp&`m}bgv+ca=->a{eHfnAt-RF|LoXO#|dn?>)4@J6nm-O58Be>$S=l?#-)Bbt=B_ z`*97q<1Y{+y+3N7dd~TP~m0 zHp9ebi}XzS%2w_cE4_jy2!7SDo10b(HF|%A%gt`5v0bs9Esw1Uo_lq@?ppqGlU1Ui zYq%>|BQJ&*)%oMj8g_?DYaqAL%hC|WQeG6kbzXfxV+9>Za@*^0S%vqfJP`JFKshOe z#j_Px1s^$t|F55eL#)(`4UAp0GE?K3%CcOQPuHZ#u?-ul6SP?S9vCdfN&Rkt zfGv~oQ4h6uN)egDCjZ;#JQkQr#Wndq=`w`WB3&2f5x__6nfH|5} zcLn`}fBfgtJYF5$(B_N3OgBEGPLxxdX5MhJMJ>|QT2$d-QXW$`iIqF^Y3b+afo^6} zNbQiy#!|A>gAKZjLb<*v&pyp9i-m==jm)=g4yK!_IxRfhJg$CFEXA~b}?L~Bd(o;Yw zCTinQH$~4(AZy~Xqh>eb5Tp+%)IqHrnpmj|N_Fs(-SmSr`X)k5tFm78!LGWaO~6t)P#jQ}i)zHjJvdI)Pq*Y1 z`FcgktJV=2G4f^me(azVUbqckMv%>e|g86_u_r0ilgYCDKg(yX69ObEjSNeiST4G_fOIDnvbw`G|T z=f@wa^fi|i*x4-ev;e1BwG3$ijU&o(1ukD3xy?y}&bVBc>QuP9qoMvm$+C6epdYT|%0Ul9-YO5Gm!&HTWL zhqejCW`|I)f^?W{95XjYK-H2n!nCi3effF@PrF8xbjpgI$U;C_XA}|@29*R{R2LKC z-byta@{`tf(q*?4l14C<&WhIjlzG}$clB~T>nLx@$m>NFqDfVp3d0M+Flq0D0@8X$ z&P%1T@VL|9HXXpk_0*(kk9>V@Mj4iY6lV{M21HqtrbfgN2Ff&m?vJ`5KmQxV@eZY| zI+9(HwBxS~y~(xBZ;V%#A=eSt&Mi%I1u{@WfF8Z{>=c@<=;mv#1pPx?v2;=)-LwfvVO}?SdtEg0UYY6H| zOQ=aPk#NhWU-H_DmH)@n9uy*mHy@EMPe_+X@Vk%T`?snivUFH3XO!=MX{P3T z&~B%^waZC^z~!RCtEezL4Lb<33Z_C~(0J5`zplW;gGR^81)N29w#~sV^939SgmG^I z`B@cm{9?959SauSA7C|H1noo z7;J-O(6|TI*^W!4Hdi_5{s4OOPB+*vn9TDEo^~joKGk$la#EwYT)=@*QdaFk$vX5g zFnBzGqUGCpwUlg7-Gvm;yh2g|-+xqD>(gh|SX?h)n~9RwD`?uIlochd2;X7Fe-T%*HOO1jbA#at81eAWBgA1Yl)E~m|WdIErX)nKY@mP;_2>cIM2%T^x_iT zcmfFMaHrgtIH-=;dmC=jHIBLvYmt<(>sPD<)hk~6~LuIfs7 z+HJ?TWkb?dZDuMH`C2!Y+k1TUzb?k&=z23q>x=<)j)OvmPaLc62Kr?=SdJSG9m0z;E6u;B%ep6e%`ATV5`D z;yZ$7!-*uXEfAQmR)uSqxdvOM#(qPT%nZ@o$?1l$^i{fbu z-1=s|R-db?O$nim0jRSLeRz+dL(5WsPbuq5MV_j=xZBl;R0}4Znl&^lPlthRZiy}^ zYF=a2c2r-qerIQ;piAt#Q`k(C*0#!Rw_tIJ)V{wA1zC#7iGvuq^h> zv7L?XN=IiuIOEraQS2Mqg4wDwSIT^;Vm#egJFQO)@e?RGSI!?qF(x$^#zjkUc?tDvzh`hZLiPgjP#8|w-hSU ziu$}(xU=>hdLz8s`{S;o?GEfQG+Ut3QCMD^R%;X?vK1I(VcKxL;tUb940^^5Rjt zS#i><2>oWdm)7(bjkD9(v8@AoOR@IHLOs8_H{166Fb^+{GKR5xr}(u6M~%{gTm8jt zml#cn_mUJRoAx<%y^PwM@Ds-xoty6^Y~PhXM_(AL)#r>ce zrk;@8yr+Cl%I$b=rx(T0B+9p=!u$E<{!Gy#>@Q+k@JBWomG<%a^_R zD$NyB>#EQi({;E{Y2IcwFqH_1%h&H)s?gg#_L^VsHdhZ;g)(`6s74DEN07u8U97Y0 zE`b}{%Q`K{CJ1>4m;=~z#CnP`c$zAK&1ZtQDXeOipm{2721jZWPN7pW2Nmk(+UXPsRr#iH>mcoWiS)*91?6(m6UWfL8rdZ`R}^Oppc|{#(N?s! z6dg6~sh;IH4}d6kTqL+8*A=sZ4d^Q@(;Z4Sg@9bTYeeaAQ_LhUKQl+W6ayO{92TcHS zrZ18(ww{k%@~(wNq(inDeiYg#l7c0n{t@K%nR3?v5PJ1rp zZ|;o)HoW=@P+@_2V1kLB2Ig}p-uB3woyld^cYH8hP>LB6eqozL#6SGwpGZerEkRM+ zU{5v27OQH*F5Pdr+$&Hv+I_YYCcl2ePyBJuEG_Z$tB()N+*-5AW<4Artv8UKzie~v z)3sR^oR5IpE!02%#8s49*-&OFH(1?M)$TxT0W>yNzdhAuY212ZdjUn&)ZJ$pRuUDd zoJwi67M~KbVnn`sA(|=f1E>fxjZSYS9ux+2J|9Jq>bSOo-=|U_zkJ1?`FOOOV}%l+ zW{@iQA1hjjw1o}_=M1JrjMONMN`9|Q`iaRKFr?;w5k z2I%1<(0(t9fhrZqQFL1jE<_QS>H|xv?)8cT(ecsgzzC!B*_zCC{|LBPL3;HXXlND3 zbpM>M{b3LFm-m2w_=kTXDh2BK2*aDdhI-gFjf)_0K&2R3+RfSg6c&H{mOIGjGhoh8 z_dB4^k5GSk2lcRn{PkZ!{`z-NA3j>C6*qTwLCd?J#64-ri|Dww<`dNl>G=ytcUzc# z_-~#`S#qNX7fUwy8AgE11=98z)WaU??vXKD16IysK~*)|(UFJ3|Y;X9zy5w1Ue?~>*mj4w6s!aM-3){tMn0bDE~-EA9t`LMSI zUH<2L82|R~BS`Ir2iMuB**Rt)FDhB3J386BX{>V4 z@hMYTtpe$Kg|vMJv|dAc`3mT;6Rs~G66Ng=Ko1`Q|K^|ngUb7##qTYdI}t8dV%IfB zWDIdEYa%^yV;x@q4$^ijs8G@RpH95Po{k0(!_7UHHdkv%%axT_xf5P(cVaiCC6wKR zp@q;w8L$c(?LPB~w0+JE&D|rPPDxm^TI;`@p+0_U0=5NvK%~1Z^LkTaM5$UdTm91M zpj4l96+b|weoT{{uoi+Km=_=&_x#;<4{diFMoUa_bH~?v92+%pD%|iC>LvFhW!v$1ODZPoVBdn8|!( zr_crg?r9l(wKf;uFk*;KkG|gle)DfXl4lYVmaC7@JOq)_eq31hAIs(mXg8 z3$Y|P2uUw8yHLrFme|+mjH-*JgT=9XtdxnDYb!mY=6cjX4PIHw31?|a;HbB3?LQ_{8&IrkX9Q=n|m%i$V011vra~8v4AT$XRhdoNHOVk z%meSjGTW{IKoY~GdOX-bS=fDPUJ?(bdR14<2IH_TTJ>``2Qr)!WvKCE$RV4^Q$f2P zPxMVs4gsWQvd-uUS~)r0ZDE*xd1p^)^W4V33{o^B`-HoCwdc^s?VNfP?b2MDK7jHuuc_qE~ z(pPG|EI$S4sFqsI6f;m&dPmv6yAN)YGuGHRGVx__-Yz;4;Wj_)8^>M&E+;xo1>kbJ z*>dPjnIL7T`_C|_mWH&Os9j0_>I!n}k1DO{PgC60-IoYYrZu{x;h0?`(xFD}cL>8A zF*kYIMa7QE)j(q8`Xt~=uw-8BdK4>Cr%?`TSWwt8cG1m6Q-;`7Lzldg|1p@GzSU z-n%$S{%6-(dqy`mE(}f3u-kixA%S(g1Ix{n4W-G9%p}G=z-lKxW3RQ;0^O+e(9CI+ z?nfbKq1lDOHj$}{*-Ue&9LH-d-uAnVU1FRcfnONf)`>ws4<8{15oBQ3RYDx>PhAo3 zJ@rH6-l@k3Q;k!P24xUv1knxohgOxyb%#@YfP6S*He?X#kG3JuEcBq1c{mHf3JxLv z)G=XU0LOdd){N&6P<0QlerDeh2k({pB=N6xxx4#on-a~}okc47Ca~`|%&=2wcupBY zmmm2FR#7szgJFR4DLe!{N4AZwf>kR>cfmfCqF(_8JRK}J`!Ht|qqxcBz{GlEJ<8MI z(`qj^2|=$TM&6_=HW)Y@WX z2>$Ry)odZu$TYs6`?=mAUHa=eTX6J+CIA2NgPm^Ai3m^=18TWg-X&7i1D~_0L0b+3dM!upc&r74-zt3XZILE z&3)W$4?%5w+%(uc1q|6npUIz+fhdD>A!#o-?bo3~8WzjwitILIl1gP0eqNierG!X2 z*=lRWmz^yQ6MdbQvgrwZ?CdkjXZiNuKarU#>P1w`;*_~*r5As(v{_?R`(3jP7-G)h z<4T=$^YRI&UDA+@%EaYe>2lZOj&(Y!{V#=VnMGbN zW_7F`WgJE>=Sf^lL{RsS4460`;QG_|P#!))`S@Noi76(|d0=;}`z@r+J>=~R$j@G| zUAB~l*=zg=^{|VkF}B!h^8gX`f;~88va+sLj7VocL|#u?*l;Xc6iK|f(ys6LdaE96 znqG(;`iSGt~NXwcsT)FFB}Gmu@EGtRi@P%^0Swa?w`T% z;+6D`ctEONPQ0#8N3o_Z&6CAph05zqZ>-hhL@iBS(o-)Z69`gGfms~1$`7A1m{PNJ*8D7eDTjcN9~#C;r}30n zsKG1dpx6errB>LRmVn1GBrg)nOaw8M7yrJ>cLWtpHtNt(@^T1j5`Qlr?~_eGY~+C0@z{4h^XN`gw;E8~Vy$3CiZ=qo5g9kj zmx_I_;DRzkL+Ay2_=eXM5})6heS@wDQ&x{zJqdMpG9woZA(wW8jVz*xZ7I!Er@9`K z^TU{3m#1vjZgtwV+NUQ#%ApDA!G7VI+kKL-RventJ5j-FYKv?>g!=D>4|Syz*Wa;< zpo6vy;Q|q%yJv1@{~#con~zaik5g5*}DAL-@6+RX=@v_t#U|(n#)s|c&+V) zNIqb8H2Y7Q3onduE7P{md{Ehn=Z@QthFq~i=u!}jWG;Ya`g1V>3kK~xX|qdZ}}bA1N) zx%E3tBa?{8Nbcx?bV;y(RFFjST#k=7%q6i)gAYGuIj!Ybs z1)9d?yuaa+V3PxpoA>v>8jRdbV6eKVj$UsP6n9-%i#5q0zU)8=Gegoc z`=i783Uq!5AFf?zmmH5{n*|s2j}N!15IRu)TUFkXE;7B?YJ4J85mcV6blGW=u&x&7 zIVsoI?ebMjF{*!((mMS!Pe8q}#`QLU+KiFgd67}FC0R?S~(=yM?; z)9|Z=#HBJ0Rw|2O=U2U)Dt*E0*SZJJZJHduW-&vhw(*Gc9~aBeg76WMS01ZlFVq49 z98cocCpaHxqQWJ!YE>-V6)?mq{AOvfaty~v z01qt!mAss1_d5@x`^`pwZ^wR}#pBp5W@B0jIIS69*64c?799nP2EYX9aHHtt;7N8& zv^>biRgYaPn`%*Cm%II)&d76WuWncM*clb!rst2 z@m|Gw5Zw&z^H{;fJ#K`+oO#n@V=`BIgGdS*^nD`Q&`!FAe`J3*B3 zHl)e>V6fBxef?Sc6_}a2huL)fMkp)==y2fqX1O>`;Y%?wca1?`)d_y;n#elqUn^Ux zxur9XZ);?j2^{U;$K{iMH}?(xvK9gHMw9JJ8oFAXP_YEd0Q;zuuf~ycbkXp1H1rRZ z3M?f~wwYOS9Gb3`r#~%h6S8AJ8UPL2XEQ-Tl0v_Z@NpXieo4dOWj;4fG4lK^XL0b` zul3Y#mF-q)grg5C;LRIPg#d}Gb;I5L*S7^|6hKm464jf8^|EuADR*K17p=k-yEZoz zWxsJTKDB6jp`ib!u3BRWaIY%91!e0c-%mYE{%R3Dp_c2u`~TtLyQvtaUzZp9kk$)N z``!xm0?Y6|bVKd^TW%BHR8D_+tvqp!5pF9rdVwN6t%aOb2Hns90yq!gk@4;}h5!Hn M07*qoM6N<$g7CN2SO5S3 diff --git a/client/connection.js b/client/connection.js index ed96543..2b62829 100644 --- a/client/connection.js +++ b/client/connection.js @@ -30,7 +30,8 @@ const Connection = function() { }; Connection.prototype.connect = function() { - this.ws = new WebSocket('ws://localhost:8080/ricochet?name=' + this.name); + const hostname = window.location.hostname; + this.ws = new WebSocket(`ws://${hostname}:8080/ricochet?name=${this.name}`); this.ws.addEventListener('open', this.socketListeners.open); this.ws.addEventListener('error', this.socketListeners.error); diff --git a/server/ricochet.js b/server/ricochet.js index 48220c3..e70685d 100644 --- a/server/ricochet.js +++ b/server/ricochet.js @@ -189,7 +189,7 @@ Ricochet.prototype.freshWalls = function() { Ricochet.prototype.freshObjective = function() { const rand = Math.floor(Math.random() * this.robotIds.length); - const id = this.robotIds[0]; //this.robotIds[rand]; + const id = this.robotIds[rand]; const { i, j } = this.randomUnoccupiedSquare(); return { diff --git a/socket/messenger.js b/socket/messenger.js deleted file mode 100644 index a1fa392..0000000 --- a/socket/messenger.js +++ /dev/null @@ -1,48 +0,0 @@ -const WebSocket = require('ws'); -const DEBUG = (process.env.NODE_ENV !== "production"); - -const Messenger = function() { - this.clients = {}; -}; - -Messenger.prototype.messageOne = function(ws, message) { - DEBUG && console.log(`Sending to only ${ws.id}:`); - DEBUG && console.log(message); - - ws.send(JSON.stringify(message)); -}; - -Messenger.prototype.messageOthers = function(ws, message) { - DEBUG && console.log(`Sending to other client(s):`); - DEBUG && console.log(message); - - Object.values(this.clients).forEach((client) => { - if (client !== ws && client.readyState === WebSocket.OPEN) { - client.send(JSON.stringify(message)); - } - }); -}; - -Messenger.prototype.messageAll = function(message) { - const clients = Object.values(this.clients); - - DEBUG && console.log(`Sending to all ${clients.length} client(s):`); - DEBUG && console.log(message); - - clients.forEach((client) => { - if (client.readyState === WebSocket.OPEN) { - client.send(JSON.stringify(message)); - } - }); -}; - -Messenger.prototype.subscribe = function(ws) { - this.clients[ws.id] = ws; -}; - -Messenger.prototype.unsubscribe = function(ws) { - delete this.clients[ws.id]; -}; - - -module.exports = Messenger; \ No newline at end of file diff --git a/socket/server.js b/socket/server.js deleted file mode 100644 index 726fdbf..0000000 --- a/socket/server.js +++ /dev/null @@ -1,52 +0,0 @@ -const WebSocket = require('ws'); -const UrlParser = require('url'); -const uuid = require('node-uuid'); -const Messenger = require('./messenger'); - -const RicochetApp = require(`${__dirname}/../server/ricochet.js`); - -const apps = { - '/ricochet': new RicochetApp({ messenger: new Messenger() }) -}; - -// Make sure all apps follow the messaging contract. -Object.keys(apps).forEach((key) => { - const app = apps[key]; - - const valid = app && app.messenger && app.onConnect && app.onMessage && app.onDisconnect; - - if (!valid) { - delete apps[key]; - console.log(`==================== \n\nCRITICAL ERROR! \n\nApplication at ${key} is missing one or more: messenger, onConnect, onMessage, onDisconnect.\n\n====================\n`); - } -}); - -const onConnect = (ws, req) => { - // Store an ID on the socket connection. - ws.id = uuid.v4(); - - const url = UrlParser.parse(req.url, true); - const app = apps[url.pathname]; - - if (app) { - app.messenger.subscribe(ws); - - app.onConnect(ws, req); - - ws.on('message', (rawBody) => { - app.onMessage(ws, rawBody); - }); - - ws.on('close', () => { - app.onDisconnect(ws); - app.messenger.unsubscribe(ws); - }); - } -}; - -//===== Generic socket server for any application instantiated above. -const wss = new WebSocket.Server({ port: 8080 }); -wss.on('connection', onConnect); - -console.log("Websocket server listening on :8080"); -