{"id":3944,"date":"2023-07-08T20:47:10","date_gmt":"2023-07-08T11:47:10","guid":{"rendered":"http:\/\/attacktube.com\/?p=3944"},"modified":"2023-07-23T15:54:36","modified_gmt":"2023-07-23T06:54:36","slug":"%e3%80%90node-js%e3%80%91socket-io-%e3%82%b5%e3%83%b3%e3%83%97%e3%83%ab%e3%82%b3%e3%83%bc%e3%83%891%ef%bd%9e%e8%b6%85%e7%b0%a1%e6%98%93%e3%83%81%e3%83%a3%e3%83%83%e3%83%88%e3%82%a2%e3%83%97%e3%83%aa","status":"publish","type":"post","link":"https:\/\/attacktube.com\/?p=3944","title":{"rendered":"\u3010Node.js\u3011Socket.IO \u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9(1)\uff5e\u7c21\u6613\u30c1\u30e3\u30c3\u30c8\u30a2\u30d7\u30ea\uff5e"},"content":{"rendered":"\n<p>Socket.IO \u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9(1)\uff5e\u7c21\u6613\u30c1\u30e3\u30c3\u30c8\u30a2\u30d7\u30ea\uff5e<br>Socket.IO\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306b\u306f\u3001HTTP\u30b5\u30fc\u30d0\u30fc\u3092\u7acb\u3066\u3066Socket.IO\u3092\u7d71\u5408\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002<br>\u3053\u306e\u3068\u304dhttp\u3067\u3082https\u306e\u3069\u3063\u3061\u3067\u3082\u52d5\u304f\u3002http\u3068https\u306e2\u7a2e\u985e\u306e\u30b3\u30fc\u30c9\u3092\u6b21\u306b\u793a\u3059\u3002<br>(1)\u30b5\u30fc\u30d0\u30fc\u5074\u3067\u3001http\u30b5\u30fc\u30d0\u30fc\u3068Socket.IO\u306e\u521d\u671f\u5316\u3092\u884c\u3046\u30b3\u30fc\u30c9<br>(2)\u30b5\u30fc\u30d0\u30fc\u5074\u3067\u3001https\u30b5\u30fc\u30d0\u30fc\u3068Socket.IO\u306e\u521d\u671f\u5316\u3092\u884c\u3046\u30b3\u30fc\u30c9<br><\/p>\n\n\n\n<!--more-->\n\n\n\n<br>\n<script async=\"\" src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-3461056110605997\" crossorigin=\"anonymous\"><\/script>\n<ins class=\"adsbygoogle\" style=\"display:block; text-align:center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-3461056110605997\" data-ad-slot=\"3137443461\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n<br>\n\n\n\n<p>(1)\u30b5\u30fc\u30d0\u30fc\u5074\u3067\u3001http\u30b5\u30fc\u30d0\u30fc\u3068Socket.IO\u306e\u521d\u671f\u5316\u3092\u884c\u3046\u30b3\u30fc\u30c9<br>client.html<\/p>\n\n\n\n<pre><code>\n&lt;!DOCTYPE html&gt;\n&lt;html lang=&quot;ja&quot;&gt;\n&lt;head&gt;\n  &lt;title&gt;Socket.IO \u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9(1)\uff5e\u7c21\u6613\u30c1\u30e3\u30c3\u30c8\u30a2\u30d7\u30ea\uff5e&lt;\/title&gt;\n  &lt;script src=&quot;https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/socket.io\/4.7.1\/socket.io.js&quot;&gt;&lt;\/script&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n  &lt;h1&gt;Socket.IO \u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9(1)\uff5e\u7c21\u6613\u30c1\u30e3\u30c3\u30c8\u30a2\u30d7\u30ea\uff5e&lt;\/h1&gt;\n\n  &lt;input type=&quot;text&quot; id=&quot;messageInput&quot;&gt;\n  &lt;button onclick=&quot;sendMessage()&quot;&gt;\u9001\u4fe1&lt;\/button&gt;\n\n  &lt;ul id=&quot;messageList&quot;&gt;&lt;\/ul&gt;\n\n  &lt;script&gt;\n    \/\/\u3053\u306e\u51e6\u7406\u3067\u30b5\u30fc\u30d0\u30fc\u3068\u901a\u4fe1\u3092\u3057\u3066\u3044\u308b\u306a\u3002\n    const socket = io(&#039;http:\/\/192.168.2.100:3000&#039;);\n    \n    \/\/ \u30b5\u30fc\u30d0\u30fc\u304b\u3089\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d7\u4fe1\n    socket.on(&#039;message&#039;, (data) =&gt; {\n      \/\/ HTML\u5185\u306eID=messageList\u300d\u3092\u6301\u3064\u8981\u7d20\u3092\u53d6\u5f97\u3059\u308b\u3002\n      const messageList = document.getElementById(&#039;messageList&#039;);\n      \/\/ \u65b0\u3057\u3044li\u8981\u7d20\u3092\u4f5c\u6210\u3059\u308b\u3002li\u8981\u7d20\u306f\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u30ea\u30b9\u30c8\u30a2\u30a4\u30c6\u30e0\u3068\u3057\u3066\u8868\u793a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u3002\n      const li = document.createElement(&#039;li&#039;);\n      \/\/ li\u8981\u7d20\u306e\u30c6\u30ad\u30b9\u30c8\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u53d7\u4fe1\u3057\u305f\u30e1\u30c3\u30bb\u30fc\u30b8(data)\u306b\u8a2d\u5b9a\u3059\u308b\u3002\n      li.textContent = data;\n      \/\/ li\u8981\u7d20\u3092messageList\u8981\u7d20\u306b\u8ffd\u52a0\u3059\u308b\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u53d7\u4fe1\u3057\u305f\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u30ea\u30b9\u30c8\u5185\u306b\u8868\u793a\u3055\u308c\u308b\u3002\n      messageList.appendChild(li);\n    });\n\n    \/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1\n    function sendMessage() {\n      \/\/ HTML\u5185\u306eID=messageInput\u300d\u3092\u6301\u3064\u8981\u7d20\u3092\u53d6\u5f97\u3059\u308b\u3002\n      const messageInput = document.getElementById(&#039;messageInput&#039;);\n      \/\/ \u30c6\u30ad\u30b9\u30c8\u5165\u529b\u6b04\u306e\u5024\u3092\u5909\u6570message\u306b\u4ee3\u5165\u3059\u308b\u3002\n      const message = messageInput.value;\n      \/\/ \u30c6\u30ad\u30b9\u30c8\u5165\u529b\u6b04\u306e\u5024\u3092\u7a7a\u6587\u5b57\u306b\u3059\u308b\u3002\n      messageInput.value = &#039;&#039;;\n\n      \/\/ \u30b5\u30fc\u30d0\u30fc\u306b\u5bfe\u3057\u3066 message \u3068\u3044\u3046\u540d\u524d\u306e\u30a4\u30d9\u30f3\u30c8\u3092\u9001\u4fe1\u3059\u308b\u3002\n      \/\/ \u3053\u3053\u3067 message \u306f\u4efb\u610f\u306e\u540d\u524d\u3067\u3001\u30b5\u30fc\u30d0\u30fc\u5074\u3067\u53d7\u3051\u53d6\u308b\u969b\u306b\u30a4\u30d9\u30f3\u30c8\u540d\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u308b\u3002\n      socket.emit(&#039;message&#039;, message);\n    }\n\n  &lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/code><\/pre>\n\n\n\n<p>server_http.js<\/p>\n\n\n\n<pre><code>\n\nconst hostname = &#039;192.168.2.100&#039;;\nconst port = 3000;\n\n\/\/ http\u30e2\u30b8\u30e5\u30fc\u30eb\u3092require\u3092\u4f7f\u3063\u3066\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u3066\u5909\u6570http\u306b\u683c\u7d0d\u3059\u308b\u3002\nconst http = require(&#039;http&#039;);\n\n\/\/ http\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304b\u3089createServer\u30e1\u30bd\u30c3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3002\n\/\/ http.createServer()\u306e\u623b\u308a\u5024\u306f\u3001http.Server\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3067\u3042\u308b\u3002\n\/\/ \u3064\u307e\u308a\u5909\u6570server\u306b\u306f\u3001http.Server\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u683c\u7d0d\u3055\u308c\u308b\u3002\nconst server = http.createServer();\n\n\/\/ Socket.IO\u306e\u521d\u671f\u5316\n\/\/ http:\/\/192.168.2.100:3000\/socket.io\/socket.io.js\u306b\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u306b\u306a\u308b\u3002\nconst io = require(&#039;socket.io&#039;)(server,{\n  \/\/ CORS(Cross-Origin Resouce Sharing)\u306e\u8a2d\u5b9a\n  cors: {\n    \/\/ \u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3057\u3066\u3082\u6b63\u5e38\u306b\u52d5\u304f\u3002\n    \/\/ \u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3057\u305f\u3089\u3001origin: &#039;*&#039;\u3068\u540c\u3058\u8a2d\u5b9a\u306b\u306a\u308b\u3002\n    origin: [&#039;http:\/\/localhost&#039;, &#039;http:\/\/127.0.0.1&#039;,&#039;https:\/\/localhost&#039;, &#039;https:\/\/127.0.0.1&#039;,&#039;http:\/\/192.168.2.100&#039;,&#039;https:\/\/192.168.2.100&#039;],\n    \/\/\u5168\u3066\u306eURL\u3092\u6307\u5b9a\u3059\u308b\u3068\u304d\u306f*\u3092\u4f7f\u3046\u3002\n    \/\/origin: &#039;*&#039;,\n  },\n});\n\n\/\/ \u30b5\u30fc\u30d0\u30fc\u306f\u6307\u5b9a\u3057\u305f\u30dd\u30fc\u30c8\u3068\u30db\u30b9\u30c8\u3067\u63a5\u7d9a\u3092\u5f85\u3061\u53d7\u3051\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u805e\u3044\u3066\u53d7\u3051\u4ed8\u3051\u308b\u72b6\u614b\u306b\u306a\u308b\u3002\n\/\/ \u3053\u3053\u3067\u306e\u300clisten\u300d\u306f\u6587\u5b57\u901a\u308a\u300c\u63a5\u7d9a\u306e\u5f85\u3061\u53d7\u3051\u300d\u3084\u300c\u53d7\u4fe1\u3092\u8074\u304f\u300d\u3068\u3044\u3046\u610f\u5473\u3067\u4f7f\u308f\u308c\u3066\u3044\u308b\u3002\nserver.listen(port, hostname,() =&gt; {\n  console.log(`Server running at http:\/\/${hostname}:${port}\/`);\n});\n\n\/\/ \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u5074\u3067 socket.emit(&#039;message&#039;, message); \n\/\/ \u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u30b5\u30fc\u30d0\u30fc\u306e io.on(&#039;message&#039;, ...) \u3067\u5b9a\u7fa9\u3055\u308c\u305f\n\/\/ \u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\u304c\u547c\u3073\u51fa\u3055\u308c\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u53d7\u4fe1\u3055\u308c\u308b\u3002\nio.on(&#039;connection&#039;, (socket) =&gt; {\n  console.log(&#039;\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u63a5\u7d9a\u3057\u307e\u3057\u305f&#039;);\n\n  \/\/ \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d7\u4fe1\n  \/\/ \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u5074\u3067 socket.emit(&#039;message&#039;, message); \u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\n  \/\/ \u30b5\u30fc\u30d0\u30fc\u5074\u3067\u5b9a\u7fa9\u3055\u308c\u305f socket.on(&#039;message&#039;, ...) \u306e\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\n  \/\/ \u304c\u5b9f\u884c\u3055\u308c\u308b\u3068\u3044\u3046\u6d41\u308c\u306b\u306a\u308a\u307e\u3059\u3002\n  socket.on(&#039;message&#039;, (data) =&gt; {\n    console.log(&#039;\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089\u306e\u30e1\u30c3\u30bb\u30fc\u30b8:&#039;, data);\n    \/\/ \u53d7\u4fe1\u3057\u305f\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u5168\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u9001\u4fe1\n    \/\/ \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u5074\u3067socket.emit(&#039;message&#039;, message);\u3092\u5b9f\u884c\u3057\u305f\u4eba\u3082\u542b\u3081\u3066\u9001\u308b\u3002\n    io.emit(&#039;message&#039;, data);\n  });\n\n  \/\/ \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3068\u306e\u63a5\u7d9a\u304c\u5207\u65ad\u3055\u308c\u305f\u3068\u304d\u306e\u51e6\u7406\n  socket.on(&#039;disconnect&#039;, () =&gt; {\n    console.log(&#039;\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u5207\u65ad\u3057\u307e\u3057\u305f&#039;);\n  });\n});\n<\/code><\/pre>\n\n\n\n<p>(2)\u30b5\u30fc\u30d0\u30fc\u5074\u3067\u3001https\u30b5\u30fc\u30d0\u30fc\u3068Socket.IO\u306e\u521d\u671f\u5316\u3092\u884c\u3046\u30b3\u30fc\u30c9<br>client.html<\/p>\n\n\n\n<pre><code>\n&lt;!DOCTYPE html&gt;\n&lt;html lang=&quot;ja&quot;&gt;\n&lt;head&gt;\n  &lt;title&gt;Socket.IO \u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9(1)\uff5e\u7c21\u6613\u30c1\u30e3\u30c3\u30c8\u30a2\u30d7\u30ea\uff5e&lt;\/title&gt;\n  &lt;script src=&quot;https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/socket.io\/4.7.1\/socket.io.js&quot;&gt;&lt;\/script&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n  &lt;h1&gt;Socket.IO \u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9(1)\uff5e\u7c21\u6613\u30c1\u30e3\u30c3\u30c8\u30a2\u30d7\u30ea\uff5e&lt;\/h1&gt;\n\n  &lt;input type=&quot;text&quot; id=&quot;messageInput&quot;&gt;\n  &lt;button onclick=&quot;sendMessage()&quot;&gt;\u9001\u4fe1&lt;\/button&gt;\n\n  &lt;ul id=&quot;messageList&quot;&gt;&lt;\/ul&gt;\n\n  &lt;script&gt;\n    \/\/\u3053\u306e\u51e6\u7406\u3067\u30b5\u30fc\u30d0\u30fc\u3068\u901a\u4fe1\u3092\u3057\u3066\u3044\u308b\u306a\u3002\n    const socket = io(&#039;https:\/\/192.168.2.100:3000&#039;);\n    \n    \/\/ \u30b5\u30fc\u30d0\u30fc\u304b\u3089\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d7\u4fe1\n    socket.on(&#039;message&#039;, (data) =&gt; {\n      \/\/ HTML\u5185\u306eID=messageList\u300d\u3092\u6301\u3064\u8981\u7d20\u3092\u53d6\u5f97\u3059\u308b\u3002\n      const messageList = document.getElementById(&#039;messageList&#039;);\n      \/\/ \u65b0\u3057\u3044li\u8981\u7d20\u3092\u4f5c\u6210\u3059\u308b\u3002li\u8981\u7d20\u306f\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u30ea\u30b9\u30c8\u30a2\u30a4\u30c6\u30e0\u3068\u3057\u3066\u8868\u793a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u3002\n      const li = document.createElement(&#039;li&#039;);\n      \/\/ li\u8981\u7d20\u306e\u30c6\u30ad\u30b9\u30c8\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u53d7\u4fe1\u3057\u305f\u30e1\u30c3\u30bb\u30fc\u30b8(data)\u306b\u8a2d\u5b9a\u3059\u308b\u3002\n      li.textContent = data;\n      \/\/ li\u8981\u7d20\u3092messageList\u8981\u7d20\u306b\u8ffd\u52a0\u3059\u308b\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u53d7\u4fe1\u3057\u305f\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u30ea\u30b9\u30c8\u5185\u306b\u8868\u793a\u3055\u308c\u308b\u3002\n      messageList.appendChild(li);\n    });\n\n    \/\/ \u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1\n    function sendMessage() {\n      \/\/ HTML\u5185\u306eID=messageInput\u300d\u3092\u6301\u3064\u8981\u7d20\u3092\u53d6\u5f97\u3059\u308b\u3002\n      const messageInput = document.getElementById(&#039;messageInput&#039;);\n      \/\/ \u30c6\u30ad\u30b9\u30c8\u5165\u529b\u6b04\u306e\u5024\u3092\u5909\u6570message\u306b\u4ee3\u5165\u3059\u308b\u3002\n      const message = messageInput.value;\n      \/\/ \u30c6\u30ad\u30b9\u30c8\u5165\u529b\u6b04\u306e\u5024\u3092\u7a7a\u6587\u5b57\u306b\u3059\u308b\u3002\n      messageInput.value = &#039;&#039;;\n\n      \/\/ \u30b5\u30fc\u30d0\u30fc\u306b\u5bfe\u3057\u3066 message \u3068\u3044\u3046\u540d\u524d\u306e\u30a4\u30d9\u30f3\u30c8\u3092\u9001\u4fe1\u3059\u308b\u3002\n      \/\/ \u3053\u3053\u3067 message \u306f\u4efb\u610f\u306e\u540d\u524d\u3067\u3001\u30b5\u30fc\u30d0\u30fc\u5074\u3067\u53d7\u3051\u53d6\u308b\u969b\u306b\u30a4\u30d9\u30f3\u30c8\u540d\u3068\u3057\u3066\u4f7f\u7528\u3055\u308c\u308b\u3002\n      socket.emit(&#039;message&#039;, message);\n    }\n\n  &lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;\n<\/code><\/pre>\n\n\n\n<p>server_https.js<br>\u79d8\u5bc6\u9375\u3068\u81ea\u5df1\u7f72\u540d\u8a3c\u660e\u66f8(\u30aa\u30ec\u30aa\u30ec\u8a3c\u660e\u66f8)\u306e\u8aac\u660e\u306f\u7701\u7565\u3059\u308b\u3002<\/p>\n\n\n\n<pre><code>\nconst hostname = &#039;192.168.2.100&#039;;\nconst port = 3000;\n\n\/\/ \u79d8\u5bc6\u9375\u3092\u6307\u5b9a\u3059\u308b\u3002\nconst sslServerKey = &#039;0322\/server-key.pem&#039;;\n\/\/ \u81ea\u5df1\u7f72\u540d\u8a3c\u660e\u66f8(\u30aa\u30ec\u30aa\u30ec\u8a3c\u660e\u66f8)\u3092\u6307\u5b9a\u3059\u308b\u3002\nconst sslServerCrt = &#039;0322\/server-crt.pem&#039;;\n\n\/\/ fs\u30e2\u30b8\u30e5\u30fc\u30eb\u3092require\u3092\u4f7f\u3063\u3066\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u3066\u5909\u6570fs\u306b\u683c\u7d0d\u3059\u308b\u3002\nconst fs = require(&#039;fs&#039;);\n\n\/\/ \u5909\u6570options\u306b\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u683c\u7d0d\u3059\u308b\u3002\nconst options = {\n  \/\/ \u6307\u5b9a\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9\u304b\u3089\u30d5\u30a1\u30a4\u30eb(\u79d8\u5bc6\u9375)\u3092\u540c\u671f\u7684\u306b\u8aad\u307f\u8fbc\u3080\u3002\n  key: fs.readFileSync(sslServerKey),\n  \/\/ \u6307\u5b9a\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9\u304b\u3089\u30d5\u30a1\u30a4\u30eb(\u81ea\u5df1\u7f72\u540d\u8a3c\u660e\u66f8(\u30aa\u30ec\u30aa\u30ec\u8a3c\u660e\u66f8))\u3092\u540c\u671f\u7684\u306b\u8aad\u307f\u8fbc\u3080\u3002\n  cert: fs.readFileSync(sslServerCrt)\n};\n\n\/\/ https\u30e2\u30b8\u30e5\u30fc\u30eb\u3092require\u3092\u4f7f\u3063\u3066\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u3066\u3001\u5909\u6570http\u306b\u683c\u7d0d\u3059\u308b\u3002\nconst https = require(&#039;https&#039;);\n\n\/\/ https\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304b\u3089createServer\u30e1\u30bd\u30c3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3002\n\/\/ https.createServer()\u306e\u623b\u308a\u5024\u306f\u3001https.Server\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3067\u3042\u308b\u3002\n\/\/ \u3064\u307e\u308a\u5909\u6570server\u306b\u306f\u3001https.Server\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u683c\u7d0d\u3055\u308c\u308b\u3002\nconst server = https.createServer(options);\n\n\/\/ Socket.IO\u306e\u521d\u671f\u5316\n\/\/ http:\/\/192.168.2.100:3000\/socket.io\/socket.io.js\u306b\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u306b\u306a\u308b\u3002\nconst io = require(&#039;socket.io&#039;)(server,{\n  \/\/ CORS(Cross-Origin Resouce Sharing)\u306e\u8a2d\u5b9a\n  cors: {\n    \/\/ \u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3057\u3066\u3082\u6b63\u5e38\u306b\u52d5\u304f\u3002\n    \/\/ \u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3057\u305f\u3089\u3001origin: &#039;*&#039;\u3068\u540c\u3058\u8a2d\u5b9a\u306b\u306a\u308b\u3002\n    origin: [&#039;http:\/\/localhost&#039;, &#039;http:\/\/127.0.0.1&#039;,&#039;https:\/\/localhost&#039;, &#039;https:\/\/127.0.0.1&#039;,&#039;http:\/\/192.168.2.100&#039;,&#039;https:\/\/192.168.2.100&#039;],\n    \/\/\u5168\u3066\u306eURL\u3092\u6307\u5b9a\u3059\u308b\u3068\u304d\u306f*\u3092\u4f7f\u3046\u3002\n    \/\/origin: &#039;*&#039;,\n  },\n});\n\n\/\/ \u30b5\u30fc\u30d0\u30fc\u306f\u6307\u5b9a\u3057\u305f\u30dd\u30fc\u30c8\u3068\u30db\u30b9\u30c8\u3067\u63a5\u7d9a\u3092\u5f85\u3061\u53d7\u3051\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u805e\u3044\u3066\u53d7\u3051\u4ed8\u3051\u308b\u72b6\u614b\u306b\u306a\u308b\u3002\n\/\/ \u3053\u3053\u3067\u306e\u300clisten\u300d\u306f\u6587\u5b57\u901a\u308a\u300c\u63a5\u7d9a\u306e\u5f85\u3061\u53d7\u3051\u300d\u3084\u300c\u53d7\u4fe1\u3092\u8074\u304f\u300d\u3068\u3044\u3046\u610f\u5473\u3067\u4f7f\u308f\u308c\u3066\u3044\u308b\u3002\nserver.listen(port, hostname,() =&gt; {\n  console.log(`Server running at https:\/\/${hostname}:${port}\/`);\n});\n\n\/\/ \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u5074\u3067 socket.emit(&#039;message&#039;, message); \n\/\/ \u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\u30b5\u30fc\u30d0\u30fc\u306e io.on(&#039;message&#039;, ...) \u3067\u5b9a\u7fa9\u3055\u308c\u305f\n\/\/ \u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\u304c\u547c\u3073\u51fa\u3055\u308c\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u53d7\u4fe1\u3055\u308c\u308b\u3002\nio.on(&#039;connection&#039;, (socket) =&gt; {\n  console.log(&#039;\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u63a5\u7d9a\u3057\u307e\u3057\u305f&#039;);\n\n  \/\/ \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d7\u4fe1\n  \/\/ \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u5074\u3067 socket.emit(&#039;message&#039;, message); \u3092\u5b9f\u884c\u3059\u308b\u3068\u3001\n  \/\/ \u30b5\u30fc\u30d0\u30fc\u5074\u3067\u5b9a\u7fa9\u3055\u308c\u305f socket.on(&#039;message&#039;, ...) \u306e\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\n  \/\/ \u304c\u5b9f\u884c\u3055\u308c\u308b\u3068\u3044\u3046\u6d41\u308c\u306b\u306a\u308a\u307e\u3059\u3002\n  socket.on(&#039;message&#039;, (data) =&gt; {\n    console.log(&#039;\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089\u306e\u30e1\u30c3\u30bb\u30fc\u30b8:&#039;, data);\n    \/\/ \u53d7\u4fe1\u3057\u305f\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u5168\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u9001\u4fe1\n    \/\/ \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u5074\u3067socket.emit(&#039;message&#039;, message);\u3092\u5b9f\u884c\u3057\u305f\u4eba\u3082\u542b\u3081\u3066\u9001\u308b\u3002\n    io.emit(&#039;message&#039;, data);\n  });\n\n  \/\/ \u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3068\u306e\u63a5\u7d9a\u304c\u5207\u65ad\u3055\u308c\u305f\u3068\u304d\u306e\u51e6\u7406\n  socket.on(&#039;disconnect&#039;, () =&gt; {\n    console.log(&#039;\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u5207\u65ad\u3057\u307e\u3057\u305f&#039;);\n  });\n});\n<\/code><\/pre>\n\n\n\n<script type=\"text\/javascript\">\njQuery(function($){\n$(\".jp-video\").hide();\n});\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Socket.IO \u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9(1)\uff5e\u7c21\u6613\u30c1\u30e3\u30c3\u30c8\u30a2\u30d7\u30ea\uff5eSocket.IO\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306b\u306f\u3001HTTP\u30b5\u30fc\u30d0\u30fc\u3092\u7acb\u3066\u3066Socket.IO\u3092\u7d71\u5408\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002\u3053\u306e\u3068\u304dhttp\u3067\u3082https\u306e\u3069\u3063\u3061\u3067\u3082\u52d5\u304f\u3002http [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[6],"tags":[],"class_list":["post-3944","post","type-post","status-publish","format-standard","hentry","category-node-js"],"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/attacktube.com\/index.php?rest_route=\/wp\/v2\/posts\/3944","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/attacktube.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/attacktube.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/attacktube.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/attacktube.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3944"}],"version-history":[{"count":14,"href":"https:\/\/attacktube.com\/index.php?rest_route=\/wp\/v2\/posts\/3944\/revisions"}],"predecessor-version":[{"id":4258,"href":"https:\/\/attacktube.com\/index.php?rest_route=\/wp\/v2\/posts\/3944\/revisions\/4258"}],"wp:attachment":[{"href":"https:\/\/attacktube.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3944"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/attacktube.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3944"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/attacktube.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3944"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}