質問

ローカルマシンにsocket.ioを使用して、基本的なnode.jsサーバーをセットアップするだけです。他のファイルを含めることができるようにドキュメントルートを設定する方法はありますか?すなわち。以下には、AAの背景画像付きDIVがあります。画像がサーバーの位置に関連しているパスですが、これは機能していません。何か案は?ありがとう!

var http = require('http'),  
    io = require('socket.io'), // for npm, otherwise use require('./path/to/socket.io') 

server = http.createServer(function(req, res){ 
 // your normal server code 
 res.writeHead(200, {'Content-Type': 'text/html'}); 
 res.end('<div style="background-image:url(img/carbon_fibre.gif);"><h1>Hello world</h1></div>'); 
});
server.listen(8080);

// socket.io 
var socket = io.listen(server); 
役に立ちましたか?

解決

バックグラウンドイメージスタイルの場合、ブラウザはパス *IMG/carbon_fibre.gif *を使用してサーバーにまったく新しいHTTP要求を作成します。このリクエストは匿名関数を確実にヒットしますが、応答関数のみを書き戻すだけです div contentType:text/htmlは、画像を適切に表示できないようにReq.pathnameに関係なく。

次のように関数にコードを追加できます。

var http = require('http'),  
    io = require('socket.io'),
    fs = require('fs'),
    server = http.createServer(function(req, res){ 
        // find static image file
        if (/\.gif$/.test(req.pathname)) {
            fs.read(req.pathname, function(err, data) {
                res.writeHead(200, { 'Content-Type': 'image/gif' });
                res.end(data);
            });
        }
        else {
            // write your div
        }
    });
server.listen(8080);

私はnodejsにあまり精通していないため、上記のコードはロジックのみを示していますが、実際の実行可能なコードブロックではありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top