teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2016/06/20 08:34

投稿

masaya_ohashi
masaya_ohashi

スコア9210

answer CHANGED
@@ -2,4 +2,55 @@
2
2
 
3
3
  requestのコールバックのreqに入っているurlで、出力するデータを変更しないといけません。
4
4
  参考:
5
- [http://uraway.hatenablog.com/entry/2015/11/03/node.js%E3%81%A7web%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%82%92%E7%AB%8B%E3%81%A6%E3%82%8B%E3%81%BE%E3%81%A7%E3%82%92%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B](http://uraway.hatenablog.com/entry/2015/11/03/node.js%E3%81%A7web%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%82%92%E7%AB%8B%E3%81%A6%E3%82%8B%E3%81%BE%E3%81%A7%E3%82%92%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B)
5
+ [http://uraway.hatenablog.com/entry/2015/11/03/node.js%E3%81%A7web%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%82%92%E7%AB%8B%E3%81%A6%E3%82%8B%E3%81%BE%E3%81%A7%E3%82%92%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B](http://uraway.hatenablog.com/entry/2015/11/03/node.js%E3%81%A7web%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%82%92%E7%AB%8B%E3%81%A6%E3%82%8B%E3%81%BE%E3%81%A7%E3%82%92%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B)
6
+
7
+ ###追記
8
+ 例えばあなたが今localhostでアクセスしているとしましょう。
9
+
10
+ http://localhost/
11
+ 今あなたはこのURLでアクセスすると、public/client.htmlの内容が見えてますよね?
12
+
13
+ http://localhost/client.html
14
+ このURLだとどうですか?public/client.htmlの内容が見えていますよね?
15
+
16
+ http://localhost/javascripts/socket.io.js
17
+ このURLだとどうですか?本当ならsocket.io.jsの内容が見えるつもりでしょうが、client.htmlの内容が見えていますよね?
18
+
19
+ 今のあなたのコードでは、どんなreqが来ても、必ずfs.readFileで読み込むファイルがpublic/client.htmlなので、同じ内容が返されます。
20
+ 以下のように、reqのurlに合わせて、fs.readFileで読み込むファイルを切り替えてやらねばなりません。
21
+ ```Javascript
22
+
23
+
24
+ var url = req.url;
25
+ if(url == "/") {
26
+ // http://localhost/でアクセスしたときのため
27
+ url = "/client.html";
28
+ }
29
+
30
+ var filePath = "./public" + url;
31
+
32
+ fs.readFile(filePath, function (err, data) {
33
+ if (err) {
34
+ res.writeHead(500);
35
+ return res.end('Error loading ' + url);
36
+
37
+ }
38
+
39
+ var contentType = "";
40
+ if(req.url.endsWith(".html")) {
41
+ contentType = "text/html";
42
+ }
43
+
44
+ if(req.url.endsWith(".js")) {
45
+ contentType = "text/javascript";
46
+ }
47
+
48
+ // 他コンテンツタイプは自分で対応してください。
49
+
50
+ res.writeHead(200, { 'Content-Type': contentType + '; charset=UTF-8' });
51
+ console.log('サーバー接続');
52
+
53
+ res.end(data);
54
+
55
+ });
56
+ ```