0

基本的な node.js サーバー プログラムを作成し、socket.io を使用してクライアントからいくつかのフィールド データを渡しました (以下を参照)。私はこのビジネスに慣れていないので、かなりうんざりしています。私はこの node-express-socket.io アプローチがすべて Javascript であることを気に入っており、明らかにほとんどのブラウザー (モバイルを含む) で使用可能です。問題は、私が自分の道をいじり、自分が作成したものを完全に理解していないことです! 2つの質問...

1) 「//ajax.googleapis.com...jquery...」を使用する必要がありますか? ブラウザが動作するにはインターネット接続が必要になるため、これは面倒です。インターネット接続を必要とせずに html doc 要素にアクセスする別の方法はありますか?

2) "app.use(express.static...." 行は何をしますか? "app.get..." 関数はこれを機能させる必要があるようです。

私のコードに関するその他の一般的なコメントがあれば、私に聞かせてください!

乾杯、

カーブス

クライアント側のコード:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script>
    var socket = io.connect(document.location.protocol+'//'+document.location.host);
    function clicked(){
        $(function(){
            var makeInput=$('.app').find('#make').val();
            var modelInput=$('.app').find('#model').val();
            socket.emit('make', makeInput);
            socket.emit('model', modelInput);
        });     
    };
</script>

サーバー側のコード:

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

var app = express();
var server = http.createServer(app);
var io = socketio.listen(server);

app.use(express.static(__dirname));

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

io.sockets.on('connection', function (socket) {
  socket.on('make', function (make) {
    socket.on('model',function (model){
          console.log('recieved message:', make+','+model);  
      });
  });
});
server.listen(8000);
4

2 に答える 2

1

1) 静的 Web サーバーをセットアップしたので (回答 2 を参照)、jquery ソースをダウンロードして、そこから .js ファイルを提供するだけです。

2) "app.use(express.static...." 静的 Web サーバーを構成し、http ルート ディレクトリを、__dirname変数で示されるように、node.js スクリプトが存在するディレクトリに設定します。詳細については、app. API リファレンスを使用します

その結果、次のように変更することをお勧めしますapp.use

app.use(express.static(__dirname + '/public'));

jquery ファイルを含むすべての静的ファイルをpublicサブディレクトリの下に配置します。

makeまた、サーバー側のコードは、変更する必要があるとのシーケンスに依存していますmodel。たとえば、発行順序をmodelthenに切り替えると、サーバーが前の呼び出しから make を取得することmakeがわかります。console.log

代わりに、次のようにしてみてください。

// On server:
socket.on('info', function (info) {
    console.log('recieved message:', info.make+','+info.model);  
});

// On client:
socket.emit('info', { make: makeInput, model: modelInput })
于 2013-05-11T09:31:30.633 に答える
0

1)必要に応じて、サーバーからjQueryライブラリを提供することもできます。プロジェクトの public/vendor または public/js フォルダーに配置する必要があります。

2) これはExpressフレームワークからのミドルウェア呼び出しで、Connect ミドルウェア スタックを使用します。ここでこれを読んでください。

于 2013-05-11T08:25:21.167 に答える