﻿
{"id":10526,"date":"2019-03-09T14:28:51","date_gmt":"2019-03-09T14:28:51","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=10526"},"modified":"2019-03-09T14:28:51","modified_gmt":"2019-03-09T14:28:51","slug":"node-js-websockette-clientin-girdigi-odalari-liste-olarak-elde-etme","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/node-js-websockette-clientin-girdigi-odalari-liste-olarak-elde-etme\/","title":{"rendered":"Node.js &#8211; Websocket&#8217;te Client&#8217;\u0131n Girdi\u011fi Odalar\u0131 Liste Olarak Elde Etme"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Node.js&#8217;de, websocket \u00e7al\u0131\u015fmas\u0131 yaparken herhangi bir client\u0131n girdi\u011fi odalar\u0131 liste olarak elde etmeyi istiyorsan\u0131z e\u011fer sizlere rehber olabilecek en do\u011fru i\u00e7eriktesiniz demektir \ud83d\ude42<\/p>\n<p>\u0130lk olarak a\u015fa\u011f\u0131daki websocket \u00e7al\u0131\u015fmas\u0131n\u0131 baz alarak i\u00e7eri\u011fimize ba\u015flarsak e\u011fer;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst http = require(&quot;http&quot;);\r\nconst socket = require(&quot;socket.io&quot;);\r\n\r\nconst server = http.createServer((request, response) =&gt; response.end(&quot;...&quot;));\r\nconst io = socket.listen(server.listen(5000, () =&gt; console.log(&quot;Started...&quot;)));\r\n\r\nconst roomNameSpace = io.of(&quot;\/rooms&quot;);\r\nroomNameSpace.on(&quot;connection&quot;, socket =&gt; {\r\n    console.log(&quot;Connected...&quot;);\r\n    socket.on(&quot;disconnect&quot;, () =&gt; console.log(&quot;Disconnected...&quot;));\r\n    socket.join(&quot;Room1&quot;);\r\n    socket.join(&quot;Room2&quot;);\r\n    socket.join(&quot;Room3&quot;);\r\n    socket.on(&quot;getRooms&quot;, () =&gt; {\r\n        console.log(socket.rooms);\r\n    });\r\n});\r\n<\/pre>\n<p>g\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere client &#8220;Room1&#8221;, &#8220;Room2&#8221; ve &#8220;Room3&#8221; olmak \u00fczere \u00fc\u00e7 farkl\u0131 odaya giri\u015f yapmakta ve &#8220;getRooms&#8221; event\u0131na talep neticesinde bu odalar console&#8217;a yazd\u0131r\u0131lmaktad\u0131r. Bakal\u0131m bu yazd\u0131rma neticesinde nas\u0131l bir formatta veriyle kar\u015f\u0131la\u015f\u0131lmaktad\u0131r?<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/03\/Node.js-Websockette-Client\u0131n-Girdi\u011fi-Odalar\u0131-Liste-Olarak-Elde-Etme.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/03\/Node.js-Websockette-Client\u0131n-Girdi\u011fi-Odalar\u0131-Liste-Olarak-Elde-Etme.png\" alt=\"Node.js - Websocket&#039;te Client&#039;\u0131n Girdi\u011fi Odalar\u0131 Liste Olarak Elde Etme\" width=\"561\" height=\"431\" class=\"aligncenter size-full wp-image-10529\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/03\/Node.js-Websockette-Client\u0131n-Girdi\u011fi-Odalar\u0131-Liste-Olarak-Elde-Etme.png 561w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/03\/Node.js-Websockette-Client\u0131n-Girdi\u011fi-Odalar\u0131-Liste-Olarak-Elde-Etme-300x230.png 300w\" sizes=\"auto, (max-width: 561px) 100vw, 561px\" \/><\/a><br \/>\nDikkat ederseniz e\u011fer;<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n{ \r\n  '\/rooms#fCxJKeepd6kwnL36AAAA': '\/rooms#fCxJKeepd6kwnL36AAAA',\r\n  Room1: 'Room1',\r\n  Room2: 'Room2',\r\n  Room3: 'Room3' \r\n}\r\n<\/pre>\n<p>format\u0131nda bir json verisi i\u00e7erisinde odalar\u0131m\u0131z\u0131n bilgisi gelmektedir.<\/p>\n<p>\u0130\u015fte bizler bu veri \u00fczerinde gerekli parse i\u015flemlerini uygulayarak odalar\u0131 ay\u0131klamal\u0131 ve d\u00fczenli bir liste olarak elde edebilmeliyiz. Bu i\u015flem i\u00e7in her ne kadar kendi geli\u015ftirdi\u011finiz algoritmalar\u0131 vs. devreye sokabilece\u011finiz gibi sizleri bu zahmetten ar\u0131nd\u0131ran JavaScript dilinin <em><strong>Object.keys<\/strong><\/em> komutunu da kullanabilirsiniz.<\/p>\n<h4>Object.keys Komutu<\/h4>\n<p>Elimizdeki;<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nlet dizi = &#x5B;{ &quot;0&quot;: &quot;a&quot; }, { &quot;1&quot;: &quot;b&quot; }, { &quot;2&quot;: &quot;c&quot; }, { &quot;3&quot;: &quot;\u00e7&quot; }, { &quot;4&quot;: &quot;d&quot; }];\r\n<\/pre>\n<p>format\u0131ndaki diziyi bizlere;<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n&#x5B; '0', '1', '2', '3', '4' ]\r\n<\/pre>\n<p>\u015feklinde d\u00f6nen bir fonksiyondur. Benzer mant\u0131kla elimizdeki dizinin de\u011feri a\u015fa\u011f\u0131daki gibi olursa;<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nlet dizi = &#x5B;'a', 'b', 'c', 'd'];\r\n<\/pre>\n<p>bu sefer de\u011ferler yerine a\u015fa\u011f\u0131daki gibi index numaralar\u0131n\u0131 d\u00f6nd\u00fcrecektir;<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n&#x5B; '0', '1', '2', '3' ]\r\n<\/pre>\n<p>Haliyle &#8220;socket.rooms&#8221; komutu neticesinde gelen oda verileri, <em>Object.keys<\/em> komutu sayesinde kolay sadele\u015ftirilebilir bir formatta elde edilmektedir.<\/p>\n<p>Dolay\u0131s\u0131yla <em>Object.keys<\/em> fonksiyonunu a\u015fa\u011f\u0131daki gibi elde etti\u011fim odalara uygulamaktay\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst http = require(&quot;http&quot;);\r\nconst socket = require(&quot;socket.io&quot;);\r\n\r\nconst server = http.createServer((request, response) =&gt; response.end(&quot;...&quot;));\r\nconst io = socket.listen(server.listen(5000, () =&gt; console.log(&quot;Started...&quot;)));\r\n\r\nconst roomNameSpace = io.of(&quot;\/rooms&quot;);\r\n\r\nroomNameSpace.on(&quot;connection&quot;, socket =&gt; {\r\n    console.log(&quot;Connected...&quot;);\r\n    socket.on(&quot;disconnect&quot;, () =&gt; console.log(&quot;Disconnected...&quot;));\r\n    socket.join(&quot;Room1&quot;);\r\n    socket.join(&quot;Room2&quot;);\r\n    socket.join(&quot;Room3&quot;);\r\n    socket.on(&quot;getRooms&quot;, () =&gt; {\r\n        console.log(Object.keys(socket.rooms));\r\n    });\r\n});\r\n<\/pre>\n<p>\u0130\u015flem neticesinde client\u0131n giri\u015f yapt\u0131\u011f\u0131 t\u00fcm odalar\u0131n bilgilerini a\u015fa\u011f\u0131daki ekran g\u00f6r\u00fcnt\u00fcs\u00fcnde oldu\u011fu gibi elde etmi\u015f bulunmaktay\u0131z.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/03\/Node.js-Websockette-Client\u0131n-Girdi\u011fi-Odalar\u0131-Liste-Olarak-Elde-Etme-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/03\/Node.js-Websockette-Client\u0131n-Girdi\u011fi-Odalar\u0131-Liste-Olarak-Elde-Etme-1.png\" alt=\"Node.js - Websocket&#039;te Client&#039;\u0131n Girdi\u011fi Odalar\u0131 Liste Olarak Elde Etme\" width=\"557\" height=\"433\" class=\"aligncenter size-full wp-image-10543\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/03\/Node.js-Websockette-Client\u0131n-Girdi\u011fi-Odalar\u0131-Liste-Olarak-Elde-Etme-1.png 557w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/03\/Node.js-Websockette-Client\u0131n-Girdi\u011fi-Odalar\u0131-Liste-Olarak-Elde-Etme-1-300x233.png 300w\" sizes=\"auto, (max-width: 557px) 100vw, 557px\" \/><\/a><\/p>\n<p>Haliyle bu bilgileri client&#8217;ta listelemek isterseniz a\u015fa\u011f\u0131daki gibi bir \u00e7al\u0131\u015fma yapman\u0131z yeterli olacakt\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst http = require(&quot;http&quot;);\r\nconst socket = require(&quot;socket.io&quot;);\r\n\r\nconst server = http.createServer((request, response) =&gt; response.end(&quot;...&quot;));\r\nconst io = socket.listen(server.listen(5000, () =&gt; console.log(&quot;Started...&quot;)));\r\n\r\nconst roomNameSpace = io.of(&quot;\/rooms&quot;);\r\n\r\nroomNameSpace.on(&quot;connection&quot;, socket =&gt; {\r\n    console.log(&quot;Connected...&quot;);\r\n    socket.on(&quot;disconnect&quot;, () =&gt; console.log(&quot;Disconnected...&quot;));\r\n    socket.join(&quot;Room1&quot;);\r\n    socket.join(&quot;Room2&quot;);\r\n    socket.join(&quot;Room3&quot;);\r\n    socket.on(&quot;getRooms&quot;, () =&gt; {\r\n        socket.emit(&quot;getRooms&quot;, Object.keys(socket.rooms));\r\n    });\r\n});\r\n<\/pre>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n&lt;!DOCTYPE html&gt;\r\n&lt;html lang=&quot;en&quot;&gt;\r\n&lt;head&gt;\r\n    &lt;script src=&quot;https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jquery\/3.3.1\/jquery.min.js&quot;&gt;&lt;\/script&gt;\r\n    &lt;script src=&quot;https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/socket.io\/2.2.0\/socket.io.js&quot;&gt;&lt;\/script&gt;\r\n    &lt;script&gt;\r\n        const socket = io.connect(&quot;http:\/\/localhost:5000\/rooms&quot;);\r\n        $(() =&gt; {\r\n            $(&quot;#btnGetRooms&quot;).click(() =&gt; {\r\n                socket.emit(&quot;getRooms&quot;);\r\n                socket.on(&quot;getRooms&quot;, allRooms =&gt; {\r\n                    let html = &quot;&quot;;\r\n                    debugger\r\n                    $.each(allRooms, (i, n) =&gt; html += `&lt;li&gt;${n}&lt;\/li&gt;`);\r\n                    $(&quot;#ulAllRooms&quot;).html(html);\r\n                });\r\n            });\r\n        });\r\n    &lt;\/script&gt;\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n    &lt;button id=&quot;btnGetRooms&quot;&gt;Get Rooms&lt;\/button&gt;\r\n    &lt;ul id=&quot;ulAllRooms&quot;&gt; &lt;\/ul&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;\r\n<\/pre>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/03\/Node.js-Websockette-Client\u0131n-Girdi\u011fi-Odalar\u0131-Liste-Olarak-Elde-Etme.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2019\/03\/Node.js-Websockette-Client\u0131n-Girdi\u011fi-Odalar\u0131-Liste-Olarak-Elde-Etme.gif\" alt=\"Node.js - Websocket&#039;te Client&#039;\u0131n Girdi\u011fi Odalar\u0131 Liste Olarak Elde Etme\" width=\"484\" height=\"184\" class=\"aligncenter size-full wp-image-10550\" \/><\/a><\/p>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<br \/>\nSonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar dilerim&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Node.js&#8217;de, websocket \u00e7al\u0131\u015fmas\u0131 yaparken herhangi bir client\u0131n girdi\u011fi odalar\u0131 liste olarak elde etmeyi istiyorsan\u0131z e\u011fer sizlere rehber olabilecek en do\u011fru i\u00e7eriktesiniz demektir \ud83d\ude42 \u0130lk olarak a\u015fa\u011f\u0131daki websocket \u00e7al\u0131\u015fmas\u0131n\u0131 baz alarak i\u00e7eri\u011fimize ba\u015flarsak e\u011fer;&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":8600,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2145],"tags":[2715,2777,2713,2779,2778],"class_list":["post-10526","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-node-js","tag-node-js-websocket","tag-object-keys","tag-websocket","tag-websocket-client-oda-isimleri","tag-websocket-client-rooms-name"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/10526","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=10526"}],"version-history":[{"count":22,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/10526\/revisions"}],"predecessor-version":[{"id":10552,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/10526\/revisions\/10552"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/8600"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=10526"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=10526"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=10526"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}