手書きの弾幕サーバー-パッケージの理解編

2937 ワード

socket.io
概要
流行のウェブアプリケーション技術スタック、例えばLAMP(PHP)--を使用してチャットアプリケーションを作成することは通常困難である.変更を検出するためにサーバをポーリングし、タイムスタンプを追跡する機能も備えており、この実装は遅い.
ほとんどのリアルタイムチャットシステムは通常socketに基づいて構築されます.Socketは、クライアントとサーバの双方向通信メカニズムを提供します.
これは、サーバがクライアントにメッセージをプッシュできることを意味します.メッセージをパブリッシュするたびに、サーバはメッセージを受信し、サーバに接続されている他のクライアントにプッシュすることができます.
Webフレームワーク
まず、フォームとメッセージのリストを提供するためにHTMLページを作成します.Nodeベースを使用しました.JSのwebフレームワークexpress.ノードがインストールされていることを確認してください.JS.
まずpackageを作成します.jsonは私たちのプロジェクトを説明します.空のディレクトリを新規作成することをお勧めします(ここではchat-exampleを使用します).
expressはインストールされています.新しいindexを作成します.jsファイルを使用してアプリケーションを作成します.
var app = require('express')();
var http = require('http').Server(app);

app.get('/', function(req, res){
  res.send('

Hello world

'); }); http.listen(3000, function(){ console.log('listening on *:4000'); });

このコードは次のように機能します.
Expressは、HTTPサーバのコールバック関数としてappを初期化します.
トップページアクセスを処理するためのルーティング/を定義します.
httpサーバにポート4000をリスニングさせる.
HTMLサーバ
現在index.jsではres.sendでHTML文字列を返します.アプリケーション全体のHTMLコードをアプリケーションコードに入れると、コード構造が混乱します.代わりにindexを新規作成します.htmlファイルはサーバとして応答します.
sendFileを使用して、以前のコールバックを再構築します.
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});

index.htmlの内容は以下の通りです.



  
    Socket.IO chat
    
  
  
    

集成 Socket.IO

Socket.IO 由两部分组成:

  • 一个服务端用于集成 (或挂载) 到 Node.JS HTTP 服务器: socket.io
  • 一个加载到浏览器中的客户端: socket.io-client

这个两部分都会运用到

npm install --save socket.io

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');
});

io.on('connection', function(socket){
  console.log('a user connected');
});

http.listen(3000, function(){
  console.log('listening on *:3000');
});

http(HTTPサーバ)オブジェクトへの転送によりsocketを初期化した.ioのインスタンスです.次にconnectionイベントをリスニングしてsocketsを受信し、接続情報をコンソールに印刷します.
indexでhtmlの