ホームページ ウェブフロントエンド jsチュートリアル WebSocket通信機能をnodejsに実装する方法

WebSocket通信機能をnodejsに実装する方法

Jun 12, 2018 am 11:54 AM
nodejs socket.io websocket 通信

この記事では、WebSocket通信機能を実現するためにnodejsとsocket.ioを組み合わせた方法を主に紹介し、WebSocket通信を実現するためのnodejsと関連する操作スキルをサンプルの形で分析します。この記事の例を参照してください

WebSocket通信機能を実装するためのnodejsとsocket.ioの組み合わせ方法について説明します。参考までに皆さんと共有してください。詳細は次のとおりです:

プロジェクトにはバックグラウンド データのリアルタイム取得が必要なシナリオがあるため、以前は http ハートビート リクエスト メソッドが使用されていました。 WebSocket はこのモードと比較してパフォーマンスが大幅に向上し、リアルタイム パフォーマンスを向上させることができるため、WebSocket についていくつかの研究が行われています。これは、nodejs+socket.io を使用して実装されます。

目標を達成する

元のハートビートリクエストのバックグラウンドデータメソッドを、バックグラウンドへのソケット接続を介した統合プッシュメソッドに変更します。バックグラウンド データは、他のプロセスによってファイルまたは Redis に書き込まれます。ここで実装されるのは、ファイルを読み取る方法です。

事前準備

nodejsをインストール(省略)

サーバー側

新しいプロジェクトディレクトリを作成、ここにsockettest
sockettestディレクトリに入り、expressモジュールとsocketioモジュールをインストールする

npm install --save express@4.10.2
npm install --save socket.io
ログイン後にコピー

新しいパッケージ。json ファイルに次の内容を記述します。

{
 "name": "socket-test",
 "version": "0.0.1",
 "description": "my first socket.io app",
 "dependencies": {
  "express": "^4.10.2",
  "socket.io": "^1.7.2"
 }
}
ログイン後にコピー

デフォルトのアクセス表示ページとして使用される新しいindex.htmlを作成します。ここでは使用されないため、内容は任意です。
新規作成します。 Trends.js ファイルを作成し、その中にコンテンツを書き込みます。 :

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var fs = require('fs');
#默认打开文件
app.get('/', function(req, res){
  res.sendfile('index.html');
});
#用于存储所有socket以广播数据
var iolist = [];
#定义socket on connection(连入)事件行为
io.on('connection', function(socket){
  #将连入socket加入列表
  iolist.push(socket); 
  #记录index,在disconnect(断开连接)发生时将对应的socket删除
  var sockex = iolist.indexOf(socket); 
  #定义on disconnect事件行为
  socket.on('disconnect', function(){
    #将断开连接的socket从广播列表里删除
    iolist.splice(sockex, 1);
  });
});
# 数据广播进程:每1秒钟广播一次
setInterval(function() {
  # 如果没有正在连接的socket,直接返回;
  if (iolist.length <= 0) return;
  var trends = fs.readFileSync(&#39;./data/trends.json&#39;,&#39;utf-8&#39;);#trends数据
  var coins = fs.readFileSync(&#39;./data/coins.json&#39;,&#39;utf-8&#39;);#coins数据
  #向所有socket连接发送数据
  for (i in iolist) {
    # 向客户端发送trends数据
    iolist[i].emit(&#39;trends&#39;, trends);
    # 向客户端发送coins数据
    iolist[i].emit(&#39;coins&#39;, coins);
  }
}, 1000);
# 服务器侦听在sockettest.com的3000端口上
http.listen(3000, function(){
  # 输出到标准输出
  console.log(&#39;listening on sockettest.com:3000&#39;);
});
ログイン後にコピー

新しいデータ ディレクトリを作成し、ソケット サーバーによって読み取られるデータを保存するために、以下の 2 つの新しいファイル Trend と Coins を作成します。
新しいパブリックディレクトリを作成し、その中に新しいファイルindex.htmlを作成します。ファイルの内容は次のとおりです:

<!--引入必要的js文件-->
<script type="text/javascript" src="http://sockettest:3000/socket.io/socket.io.js"></script>
<script type="text/javascript">
    //新建socket
    var socket = io(&#39;http://sockettest.com:3000&#39;);
    socketdata(socket);
    function socketdata() {
      #定义接收到coins类型数据时的行为
      socket.on(&#39;coins&#39;, function(msg){
        console.log(msg);
      }
      #定义接收到trends类型数据时的行为
      socket.on(&#39;trends&#39;, function(msg){
        console.log(msg);
      }
    }
</script>
ログイン後にコピー

コードデプロイメント

2つのindex.htmlファイルを作成した理由は次のとおりです。既存のソケットに簡単に追加できるようにします。nodejs によって提供されるソケット サービスは、Web プロジェクトで使用されます。このようにして、nginx や tomcat などの他のサーバーに public/index.html をデプロイし、ルート ディレクトリでソケット サーバーを起動してソケット サービスを提供できます。
まず、先ほどのプロジェクトのルート ディレクトリで

node ./trends.js
ログイン後にコピー

を実行し、ターミナルを実行したままにして、プロジェクトを nginx にデプロイし、Chrome 経由で nginx が提供する Web サービスにアクセスします:

http://hostname/public/開発者モードをオンにすると、ノード サーバーからソケット プッシュ メッセージを毎秒受信することがコンソールで確認できます。データ ディレクトリ内の 2 つのファイルを変更すると、ファイルに書き込まれたデータもリアルタイムでクライアントにプッシュされることがわかります。

上記は私があなたのためにまとめたものです。

関連記事:

vueでcliを使用して複数ページのスキャフォールディングの再構築を実装する方法

JSでドロップダウンメニューのコンテンツ同期入力ボックスのクリック・トゥ・クリックを実現

入力ボックスとドロップダウンボックス連携

Parcel.jsを使用したパッケージングエラーの問題

vue再構成技術の詳細な解釈

以上がWebSocket通信機能をnodejsに実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Nodejs はバックエンド フレームワークですか? Nodejs はバックエンド フレームワークですか? Apr 21, 2024 am 05:09 AM

Node.js は、高いパフォーマンス、スケーラビリティ、クロスプラットフォーム サポート、豊富なエコシステム、開発の容易さなどの機能を備えているため、バックエンド フレームワークとして使用できます。

Nodejsをmysqlデータベースに接続する方法 Nodejsをmysqlデータベースに接続する方法 Apr 21, 2024 am 06:13 AM

MySQL データベースに接続するには、次の手順に従う必要があります。 mysql2 ドライバーをインストールします。 mysql2.createConnection() を使用して、ホスト アドレス、ポート、ユーザー名、パスワード、データベース名を含む接続オブジェクトを作成します。 connection.query() を使用してクエリを実行します。最後に connection.end() を使用して接続を終了します。

Nodejs インストール ディレクトリ内の npm ファイルと npm.cmd ファイルの違いは何ですか? Nodejs インストール ディレクトリ内の npm ファイルと npm.cmd ファイルの違いは何ですか? Apr 21, 2024 am 05:18 AM

Node.js インストール ディレクトリには、npm と npm.cmd という 2 つの npm 関連ファイルがあります。違いは次のとおりです。拡張子が異なります。npm は実行可能ファイルで、npm.cmd はコマンド ウィンドウのショートカットです。 Windows ユーザー: npm.cmd はコマンド プロンプトから使用できますが、npm はコマンド ラインからのみ実行できます。互換性: npm.cmd は Windows システムに固有ですが、npm はクロスプラットフォームで使用できます。使用上の推奨事項: Windows ユーザーは npm.cmd を使用し、他のオペレーティング システムは npm を使用します。

Nodejsのグローバル変数とは何ですか Nodejsのグローバル変数とは何ですか Apr 21, 2024 am 04:54 AM

Node.js には次のグローバル変数が存在します。 グローバル オブジェクト: グローバル コア モジュール: プロセス、コンソール、require ランタイム環境変数: __dirname、__filename、__line、__column 定数: unknown、null、NaN、Infinity、-Infinity

NodejsとJavaの間に大きな違いはありますか? NodejsとJavaの間に大きな違いはありますか? Apr 21, 2024 am 06:12 AM

Node.js と Java の主な違いは、設計と機能です。 イベント駆動型とスレッド駆動型: Node.js はイベント駆動型で、Java はスレッド駆動型です。シングルスレッドとマルチスレッド: Node.js はシングルスレッドのイベント ループを使用し、Java はマルチスレッド アーキテクチャを使用します。ランタイム環境: Node.js は V8 JavaScript エンジン上で実行され、Java は JVM 上で実行されます。構文: Node.js は JavaScript 構文を使用し、Java は Java 構文を使用します。目的: Node.js は I/O 集中型のタスクに適しており、Java は大規模なエンタープライズ アプリケーションに適しています。

ワイヤレスマウスの開発経緯 ワイヤレスマウスの開発経緯 Jun 12, 2024 pm 08:52 PM

原題:「ワイヤレスマウスはどのようにしてワイヤレスになるのか?」 》ワイヤレスマウスは今日のオフィスコンピュータの標準機能となり、今後は長いコードを引きずる必要はなくなります。しかし、ワイヤレスマウスはどのように機能するのでしょうか?今日は、No.1 ワイヤレス マウスの開発の歴史について学びます。ワイヤレス マウスは 1984 年に世界初のワイヤレス マウスを開発しましたが、このワイヤレス マウスは信号として赤外線を使用していたことをご存知ですか?キャリアは下の写真のようになると言われていますが、後にパフォーマンス上の理由で失敗しました。ロジクールがついに 27MHz で動作するワイヤレス マウスの開発に成功したのは、10 年後の 1994 年でした。この 27MHz の周波数も、長い間ワイヤレス マウスとして使用されてきました。

Nodejs はバックエンド開発言語ですか? Nodejs はバックエンド開発言語ですか? Apr 21, 2024 am 05:09 AM

はい、Node.js はバックエンド開発言語です。これは、サーバー側のビジネス ロジックの処理、データベース接続の管理、API の提供などのバックエンド開発に使用されます。

Nodejsプロジェクトをサーバーにデプロイする方法 Nodejsプロジェクトをサーバーにデプロイする方法 Apr 21, 2024 am 04:40 AM

Node.js プロジェクトのサーバー デプロイメント手順: デプロイメント環境を準備します。サーバー アクセスの取得、Node.js のインストール、Git リポジトリのセットアップ。アプリケーションをビルドする: npm run build を使用して、デプロイ可能なコードと依存関係を生成します。コードをサーバーにアップロードします: Git またはファイル転送プロトコル経由。依存関係をインストールする: サーバーに SSH で接続し、npm install を使用してアプリケーションの依存関係をインストールします。アプリケーションを開始します。node Index.js などのコマンドを使用してアプリケーションを開始するか、pm2 などのプロセス マネージャーを使用します。リバース プロキシの構成 (オプション): Nginx や Apache などのリバース プロキシを使用して、トラフィックをアプリケーションにルーティングします。

See all articles