ホームページ  >  記事  >  ウェブフロントエンド  >  ExpressベースのWebSocketを使ったnode.jsの詳細説明

ExpressベースのWebSocketを使ったnode.jsの詳細説明

小云云
小云云オリジナル
2017-12-23 09:03:502780ブラウズ

この記事では、Express に基づいた WebSocket を使用した Node.js の方法を主に紹介し、WebSocket を呼び出す際の関連設定と操作スキルを例に基づいて分析します。皆さんのお役に立てれば幸いです。

私もこのエフェクトを長い間探していましたが、テストは成功しました。とにかく成功しました。見てみましょう

まず、socket.io モジュールをインストールする必要があります


npm install socket.io --save

それから、モジュールをインポートするには、


var app = express();

の12行ほど下に


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

を2行追加し、さらに20行以上に


app.use(function(req, res, next){
 res.io = io;
 next();
});

を追加します。 www から開始するのは好きではないので、アプリ内で、最後から 2 番目の行の上にさらに数行のコードが追加されました


var port = 3000;
app.set('port', port);
server.listen(port);

これにより、3000 ポートのリッスンが開始されます

, 準備作業が完了しましたので、サンプルを開始します

サンプルコードのテストは公式を使用してください


io.on('connection', function (socket) {
 socket.emit('news', { hello: 'world1' });
 socket.on('my other event', function (data) {
  console.log(data);
 });
});

まずはサーバー側の準備作業が完了しました。クライアント ページにsocket.js ファイルを導入します


<script src=&#39;javascripts/socket.io-1.4.5.js&#39;></script>
var socket = io.connect("//localhost:3000");
socket.on(&#39;news&#39;, function (data) {
  console.log(data);
  alert(data);
  socket.emit(&#39;my other event&#39;, { my: &#39;data&#39; });
});

次に、ページを開いてテストします

場合、サーバーからの情報を 1 つのページにのみ送信したい場合は、次のように記述できます

router.get(&#39;/&#39;, function(req, res, next) {
  //只有当前页面可以获得
  res.io.on(&#39;connection&#39;, function(socket) {
    socket.emit(&#39;news&#39;, {
      hello: &#39;world&#39;
    });
    socket.on(&#39;my other event&#39;, function(data) {
      console.log(data);
    });
  });
  //所有页面都可以获得
  var io = require("../app").io;
  io.emit("news",{hello:"myworld"});
  res.render("pclogin.ejs", {});
});

関連する推奨事項:

外部ネットワークに接続できないWebSocket展開サーバーの解決策について

phpでのwebsocketの詳細な紹介

nodejs +websocketでチャットシステム機能が完成

以上がExpressベースのWebSocketを使ったnode.jsの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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