2016-10-18 5 views
0

私はNode.jsのとExpressに少し新しいです、そして現在私はメッセージを生成し、送りたいページに取り組んでいます(サーバーから)1秒ごとにクライアントページに送信されます(実際には1250ms)。ユーザーがサイトにアクセスすると、最新のメッセージがブロードキャストされ、1秒後に新しいメッセージが送信されます。言い換えると、すべてのユーザーは、サーバーに接続したときに関係なく、Webページ上で同じメッセージを同時に表示します。、ノード、Expressを使用して(とSocket.io?)ページを更新するために、1秒ごとに

私はいくつかの検索を行いましたが、残念ながらコードサンプルをオンラインで再生することはありませんでした。ここで説明するROUGH IDEAです:

app.js

'use strict'; 

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


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


http.listen(3000, function(){ 
    /* someFunction to generate new LATESTMESSAGE every 1s */ 

    io.on('connection', function (socket) { 
     socket.emit('news', { messages: LATESTEMESSAGE }) 
    }); 
}); 

私はメッセージがあるときに私は(LATESTMESSAGEを生成する関数からsocket.ioを経由して、すべての1秒のメッセージを送信する必要があるだろうと仮定ソケット経由で送信?)その場合、socket.ioにはapp.js以外のページにsocket.ioが必要です(この関数はおそらく独自のjsファイルのクラスになります)。socket.ioにはappが必要です。 express(上記のコードを参照)。

私は助けてくれてありがとう!私は今日このことを熟考し、どんな方向性や援助も感謝しています。十分な情報を提供していない場合は、私に知らせてください。

p.s.上記のコードは間違いなく必要なものを達成しません。達成しようとしていることを示すための概要だけを示します

答えて

0

半二重通信のように見えます。サーバのみがデータをクライアントに送信します。 Socket.ioは全二重通信です。つまり、サーバークライアントが互いにデータを送信します。技術的には、EventStreamを使用したServer Sent Events(SSE)が要件に最も適しています。 Socket.ioはやや過大かもしれません。

は何がしたいことはミドルウェア、アプリケーションを渡すことを書くことである、と述べました。あなたの ioは、基本的にミドルウェア機能に渡されるので、Socketにアクセスできます。 ioは、ミドルウェア機能に渡されます。また、ミドルウェア機能は app.jsにインポートされます。

関連する問題