プロが教えるわが家の防犯対策術!

LINE(自動更新チャット)の仕組みについて教えてください。

LINEのように、相手側が入力すると
自分側が、LINE開いたままでも、
常に更新されているのは、どのような仕組みでしょうか?

私は、普通の掲示版は作れるようになりました。
そこで、その掲示版に、他ユーザーが入力更新すると、

見ている他ユーザーの画面も更新させるとなれば
難しいのでしょうか?

これはPerlというよりHTMLのメタやjavascriptになるのでしょうか?

■HTML
<meta http-equiv="Refresh" content="1">
↑これのスパンを短くするとか?

■JavaScript
<script language="javascript">
<!--
function rld(){
location.reload();
}
function timset(){
var tid = -1;
tid = setTimeout("rld()",1000);
}
//-->
</script>
</head>

<body onLoad="timset();">

これらですと、更新はされるようですが、
※画面のチラツキが気になりますが。。。
常に更新されている形なので、サーバー側やユーザー側に
負荷がかかるように思います・・・

質問①
上記のようなことを、
サーバー、ユーザーに負担をかけず、LINE風にすることは
できますか?

質問②
私の認識がまだ曖昧なものが多く、上記のような認識
で合っていますか・・・?

質問③
これが、本題になるかな?
サーバー側で、掲示版が入力されたとき、
ページを更新させるようにしたいです。

難しいでしょうか・・・?
これはサーバー側になるので、CGIのほうがいいかなと思いました

A 回答 (1件)

こんにちは



ブラウザベースということでよいのでしょうか?

大まかに言って、ブラウザから『更新ある?』と一定間隔でサーバにリクエストを送り、更新があれば表示を更新する(更新がなければしない)という方式と、新しい更新データを受け取った際に、サーバ側から接続中のブラウザ(全体に)『更新されたよ!』と新しいデータを送る方式とがあるようです。
後者の場合は、サーバ側で接続しているクライアントの情報を管理しておく必要がありますが、無駄な通信が発生しない分だけ効率は良いと思われます。

ご提示の、
 http-equiv="Refresh" を利用する方法や
 location.reload();  で再読み込みするといった方法では、
更新がなくても(同じ内容で)書き直すことになるので、間隔が短ければチラつきの原因となります。(間隔が長くても、書き直す際にはチラつきがでます)

上述のように、「更新がなければ表示はそのまま」というような仕組みにしておけば、リクエストを繰り返す方法であったとしても、見た目には気にならなくなるでしょう。
とはいえ、1秒毎のリクエストだと、必ずそれに答えられるという環境はそうは多くないかもしれませんね。「結果を受信してから〇秒後に再度リクエストする」などとしておくほうがよさそうな気がします。
間隔に関しては、その掲示板(?)がどれだけリアルタイムである必要があるかによって決まってくるものと思います。
(環境の結果としての通信速度以上に速くなることはあり得ませんけれど)


検索すればいろいろ情報が見つかると思いますが、以下のサイトあたりが参考になるかも知れません。
http://tsujimotter.hatenablog.com/entry/2014/03/ …
https://ja.wikipedia.org/wiki/Push%E6%8A%80%E8%A …
    • good
    • 0
この回答へのお礼

>大まかに言って、ブラウザから『更新ある?』
後者のことを実現させたいですね。

>1秒毎のリクエストだと、必ずそれに答えられるという環境はそうは多くないかもしれませんね
そうですよね。

ご掲示くださったサイトも目を通してみました。
http://tsujimotter.hatenablog.com/entry/2014/03/

https://iritec.jp/web_service/6632/
私が見たサイトの中で、これも参考にはなったのですが、
ご掲示くださったソース、自分で見たソースも
PHPで、私は、Perlしか使えません・・・

Perlでのサンプルを探しているのですが、
なかなか見つかりません・・・

お礼日時:2017/10/19 16:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!