[解決済み] Socket.ioの最もシンプルな例とは?
2022-08-16 07:46:15
質問
私は最近Socket.ioを理解しようとしていますが、私は超一流のプログラマーではなく、ウェブ上で見つけることができるほとんどすべての例(私を信じて何時間も何時間も探しました)は、物事を複雑にしている余分なものを持っています。多くの例では、私を混乱させるような多くのことを行ったり、奇妙なデータベースに接続したり、coffeescript や大量の JS ライブラリを使用して、物事を混乱させています。
サーバーがクライアントに10秒ごとに何時というメッセージを送り、クライアントがそのデータをページに書き込んだり、警告を出したりするような、とてもシンプルで機能する例を見たいものです。それから、私はそこから物事を考え、DB接続など必要なものを追加していくことができます。そして、私はsocket.ioのサイトの例をチェックしましたが、それらは私のために動作しませんし、それらが何をするのか理解できません。
どのように解決するのですか?
編集してください。 私はそれが誰のために優れたを参照してくださいする方が良いと感じる チャットの例 を参照するのが良いと思います。私がこの回答を提供した後、APIはかなり簡素化されました。とはいえ、ここでは、より新しいAPIのために小さく更新されたオリジナルの回答があります。
今日はいい気分なので。
索引.html
<!doctype html>
<html>
<head>
<script src='/socket.io/socket.io.js'></script>
<script>
var socket = io();
socket.on('welcome', function(data) {
addMessage(data.message);
// Respond with a message including this clients' id sent from the server
socket.emit('i am client', {data: 'foo!', id: data.id});
});
socket.on('time', function(data) {
addMessage(data.time);
});
socket.on('error', console.error.bind(console));
socket.on('message', console.log.bind(console));
function addMessage(message) {
var text = document.createTextNode(message),
el = document.createElement('li'),
messages = document.getElementById('messages');
el.appendChild(text);
messages.appendChild(el);
}
</script>
</head>
<body>
<ul id='messages'></ul>
</body>
</html>
app.js
var http = require('http'),
fs = require('fs'),
// NEVER use a Sync function except at start-up!
index = fs.readFileSync(__dirname + '/index.html');
// Send index.html to all requests
var app = http.createServer(function(req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(index);
});
// Socket.io server listens to our app
var io = require('socket.io').listen(app);
// Send current time to all connected clients
function sendTime() {
io.emit('time', { time: new Date().toJSON() });
}
// Send current time every 10 secs
setInterval(sendTime, 10000);
// Emit welcome message on connection
io.on('connection', function(socket) {
// Use socket to communicate with this particular client only, sending it it's own id
socket.emit('welcome', { message: 'Welcome!', id: socket.id });
socket.on('i am client', console.log);
});
app.listen(3000);
関連
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
[解決済み] ノードのバージョンを管理するためのnまたはnvm - 各バージョンのグローバルモジュールを保持することは良いアイデアですか?
-
[解決済み] package.jsonのチルダ(~)とキャレット(^)の違いは何ですか?
-
[解決済み] npm installの-saveオプションは何ですか?
-
[解決済み] インストールされているnpmパッケージのバージョンを検索する
-
[解決済み] npm package.jsonファイルのdependencies, devDependencies, peerDependenciesの違いは何ですか?
-
[解決済み] package.jsonの各依存関係を最新バージョンに更新する方法は?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み] socket.ioとwebsocketの違いについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Nodejs: Errorを解決する方法。ENOENT: そのようなファイルまたはディレクトリがありません
-
[解決済み】エラーです。EACCES: 権限が拒否されました、アクセス '/usr/local/lib/node_modules' 。
-
[解決済み】ExpressJSとMeteorJSの比較【終了しました
-
[解決済み】「npm install」と「npm rebuild」の違いとは?
-
[解決済み】Mongooseで配列の値を更新する方法
-
[解決済み】E11000重複キーエラー mongodb mongooseのインデックス
-
[解決済み] ReferenceError: describe は定義されていません NodeJs
-
[解決済み] TypeErrorです。リクエストパスにエスケープされていない文字が含まれています。
-
[解決済み] Yarn にパッケージを強制的に再インストールさせるにはどうしたらいいですか?
-
[解決済み] Macでポート3000をロックしているプロセスを見つける(そして殺す)【終了