{"id":2915,"date":"2024-12-11T13:14:48","date_gmt":"2024-12-11T04:14:48","guid":{"rendered":"https:\/\/www.agile-software.site\/?p=2915"},"modified":"2024-12-12T05:41:16","modified_gmt":"2024-12-11T20:41:16","slug":"websocket","status":"publish","type":"post","link":"https:\/\/agile-software.net\/?p=2915","title":{"rendered":"websocket"},"content":{"rendered":"\n<p>WebSocket\u306f\u3001\u30b5\u30fc\u30d0\u30fc\u3068\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u9593\u3067<strong>\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u53cc\u65b9\u5411\u901a\u4fe1<\/strong>\u3092\u53ef\u80fd\u306b\u3059\u308b\u901a\u4fe1\u30d7\u30ed\u30c8\u30b3\u30eb\u3067\u3059\u3002\u901a\u5e38\u306eHTTP\u901a\u4fe1\uff08\u30ea\u30af\u30a8\u30b9\u30c8\u3068\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u4e00\u56de\u9650\u308a\u306e\u3084\u308a\u53d6\u308a\uff09\u3068\u306f\u7570\u306a\u308a\u3001WebSocket\u3067\u306f\u63a5\u7d9a\u304c\u4e00\u5ea6\u78ba\u7acb\u3055\u308c\u308b\u3068\u3001\u305d\u306e\u63a5\u7d9a\u3092\u7dad\u6301\u3057\u3066\u30c7\u30fc\u30bf\u306e\u3084\u308a\u53d6\u308a\u3092\u884c\u3048\u307e\u3059\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>WebSocket\u306e\u7279\u5fb4<\/strong><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u53cc\u65b9\u5411\u901a\u4fe1<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u30b5\u30fc\u30d0\u30fc\u3068\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u81ea\u7531\u306b\u30c7\u30fc\u30bf\u3092\u9001\u53d7\u4fe1\u53ef\u80fd\u3067\u3059\u3002<\/li>\n\n\n\n<li>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089\u3060\u3051\u3067\u306a\u304f\u3001\u30b5\u30fc\u30d0\u30fc\u304b\u3089\u3082\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u63a5\u7d9a\u304c\u5e38\u306b\u30aa\u30fc\u30d7\u30f3\u306a\u305f\u3081\u3001\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u3067\u306e\u901a\u77e5\u3084\u66f4\u65b0\u304c\u53ef\u80fd\u3067\u3059\u3002<\/li>\n\n\n\n<li>\u30c1\u30e3\u30c3\u30c8\u30a2\u30d7\u30ea\u3001\u30b2\u30fc\u30e0\u3001\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u306e\u30c7\u30fc\u30bf\u30b9\u30c8\u30ea\u30fc\u30e0\uff08\u4f8b: \u682a\u4fa1\u66f4\u65b0\uff09\u306b\u6700\u9069\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\u8efd\u91cf<\/strong>\n<ul class=\"wp-block-list\">\n<li>HTTP\u30d8\u30c3\u30c0\u304c\u4e0d\u8981\u306a\u305f\u3081\u3001\u30c7\u30fc\u30bf\u9001\u53d7\u4fe1\u304c\u52b9\u7387\u7684\u3067\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>TCP\u30d9\u30fc\u30b9<\/strong>\n<ul class=\"wp-block-list\">\n<li>WebSocket\u306fTCP\u3092\u30d9\u30fc\u30b9\u306b\u52d5\u4f5c\u3057\u3001\u901a\u5e38\u306e\u30d6\u30e9\u30a6\u30b6\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>WebSocket\u306e\u4ed5\u7d44\u307f<\/strong><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30cf\u30f3\u30c9\u30b7\u30a7\u30a4\u30af<\/strong>\n<ul class=\"wp-block-list\">\n<li>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306fHTTP\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3057\u3066WebSocket\u63a5\u7d9a\u3092\u958b\u59cb\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30b5\u30fc\u30d0\u30fc\u304c\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u627f\u8a8d\u3059\u308b\u3068\u3001HTTP\u63a5\u7d9a\u306fWebSocket\u63a5\u7d9a\u306b\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3055\u308c\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>WebSocket\u306e\u91cd\u8981\u306a\u30e1\u30bd\u30c3\u30c9\u3068\u30a4\u30d9\u30f3\u30c8<\/strong><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u30b5\u30fc\u30d0\u30fc\u5074 (<code>ws<\/code>)<\/strong><\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong><code>on('connection', callback)<\/code><\/strong>\n<ul class=\"wp-block-list\">\n<li>\u65b0\u3057\u3044\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u63a5\u7d9a\u3057\u305f\u969b\u306e\u30a4\u30d9\u30f3\u30c8\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong><code>on('message', callback)<\/code><\/strong>\n<ul class=\"wp-block-list\">\n<li>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d7\u4fe1\u3057\u305f\u969b\u306e\u30a4\u30d9\u30f3\u30c8\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong><code>on('close', callback)<\/code><\/strong>\n<ul class=\"wp-block-list\">\n<li>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u5207\u65ad\u3057\u305f\u969b\u306e\u30a4\u30d9\u30f3\u30c8\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong><code>send(data)<\/code><\/strong>\n<ul class=\"wp-block-list\">\n<li>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u5074 (<code>WebSocket<\/code>)<\/strong><\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong><code>onopen<\/code><\/strong>\n<ul class=\"wp-block-list\">\n<li>\u63a5\u7d9a\u304c\u78ba\u7acb\u3055\u308c\u305f\u969b\u306b\u547c\u3073\u51fa\u3055\u308c\u308b\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong><code>onmessage<\/code><\/strong>\n<ul class=\"wp-block-list\">\n<li>\u30b5\u30fc\u30d0\u30fc\u304b\u3089\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d7\u4fe1\u3057\u305f\u969b\u306b\u547c\u3073\u51fa\u3055\u308c\u308b\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong><code>onclose<\/code><\/strong>\n<ul class=\"wp-block-list\">\n<li>\u63a5\u7d9a\u304c\u9589\u3058\u3089\u308c\u305f\u969b\u306b\u547c\u3073\u51fa\u3055\u308c\u308b\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong><code>send(data)<\/code><\/strong>\n<ul class=\"wp-block-list\">\n<li>\u30b5\u30fc\u30d0\u30fc\u306b\u30c7\u30fc\u30bf\u3092\u9001\u4fe1\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>WebSocket\u3068HTTP\u306e\u9055\u3044<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u7279\u5fb4<\/th><th>WebSocket<\/th><th>HTTP<\/th><\/tr><\/thead><tbody><tr><td><strong>\u63a5\u7d9a\u306e\u6301\u7d9a\u6027<\/strong><\/td><td>\u6301\u7d9a\u7684\uff08\u5e38\u306b\u63a5\u7d9a\uff09<\/td><td>\u4e00\u6642\u7684\uff08\u30ea\u30af\u30a8\u30b9\u30c8\u3054\u3068\u306b\u63a5\u7d9a\uff09<\/td><\/tr><tr><td><strong>\u30c7\u30fc\u30bf\u9001\u53d7\u4fe1\u65b9\u5411<\/strong><\/td><td>\u53cc\u65b9\u5411<\/td><td>\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304b\u3089\u30b5\u30fc\u30d0\u30fc<\/td><\/tr><tr><td><strong>\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u6027<\/strong><\/td><td>\u9ad8\u3044<\/td><td>\u4f4e\u3044<\/td><\/tr><tr><td><strong>\u30aa\u30fc\u30d0\u30fc\u30d8\u30c3\u30c9<\/strong><\/td><td>\u4f4e\u3044<\/td><td>\u9ad8\u3044<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u30a8\u30e9\u30fc\u96c6<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>const ws = new WebSocket(`${protocol}\/\/${window.location.host}:5000\/ws`);\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>window.location.host<\/code><\/strong><br><code>host<\/code>\u306b\u306f\u30c9\u30e1\u30a4\u30f3\u540d\u3068\u30dd\u30fc\u30c8\u756a\u53f7\uff08\u5b58\u5728\u3059\u308b\u5834\u5408\uff09\u304c\u542b\u307e\u308c\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u73fe\u5728\u306e\u74b0\u5883\u3067\u306f\u30dd\u30fc\u30c8\u756a\u53f7\u304c\u660e\u793a\u7684\u306b\u6307\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u305f\u3081\u3001\u3053\u306e\u5024\u304c\u4e0d\u6b63\u78ba\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u4e0d\u6b63\u306aURL<\/strong><br><code>window.location.host<\/code>\u304c\u6b63\u3057\u304f\u89e3\u6c7a\u3067\u304d\u306a\u304b\u3063\u305f\u5834\u5408\u3001<code>undefined<\/code>\u304c\u542b\u307e\u308c\u308bURL\u304c\u751f\u6210\u3055\u308c\u3001WebSocket\u306e\u63a5\u7d9a\u304c\u5931\u6557\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>WebSocket\u306f\u3001\u30b5\u30fc\u30d0\u30fc\u3068\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u9593\u3067\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u53cc\u65b9\u5411\u901a\u4fe1\u3092\u53ef\u80fd\u306b\u3059\u308b\u901a\u4fe1\u30d7\u30ed\u30c8\u30b3\u30eb\u3067\u3059\u3002\u901a\u5e38\u306eHTTP\u901a\u4fe1\uff08\u30ea\u30af\u30a8\u30b9\u30c8\u3068\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u4e00\u56de\u9650\u308a\u306e\u3084\u308a\u53d6\u308a\uff09\u3068\u306f\u7570\u306a\u308a\u3001WebSocket\u3067\u306f\u63a5\u7d9a\u304c\u4e00\u5ea6\u78ba\u7acb\u3055\u308c\u308b<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jin_ogp_image_url":"","_jin_last_featured_id":0,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2915","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/posts\/2915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/agile-software.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2915"}],"version-history":[{"count":2,"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/posts\/2915\/revisions"}],"predecessor-version":[{"id":2918,"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/posts\/2915\/revisions\/2918"}],"wp:attachment":[{"href":"https:\/\/agile-software.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2915"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/agile-software.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2915"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/agile-software.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}