回答編集履歴

1

追記

2016/06/20 08:34

投稿

masaya_ohashi
masaya_ohashi

スコア9206

test CHANGED
@@ -7,3 +7,105 @@
7
7
  参考:
8
8
 
9
9
  [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)
10
+
11
+
12
+
13
+ ###追記
14
+
15
+ 例えばあなたが今localhostでアクセスしているとしましょう。
16
+
17
+
18
+
19
+ http://localhost/
20
+
21
+ 今あなたはこのURLでアクセスすると、public/client.htmlの内容が見えてますよね?
22
+
23
+
24
+
25
+ http://localhost/client.html
26
+
27
+ このURLだとどうですか?public/client.htmlの内容が見えていますよね?
28
+
29
+
30
+
31
+ http://localhost/javascripts/socket.io.js
32
+
33
+ このURLだとどうですか?本当ならsocket.io.jsの内容が見えるつもりでしょうが、client.htmlの内容が見えていますよね?
34
+
35
+
36
+
37
+ 今のあなたのコードでは、どんなreqが来ても、必ずfs.readFileで読み込むファイルがpublic/client.htmlなので、同じ内容が返されます。
38
+
39
+ 以下のように、reqのurlに合わせて、fs.readFileで読み込むファイルを切り替えてやらねばなりません。
40
+
41
+ ```Javascript
42
+
43
+
44
+
45
+
46
+
47
+ var url = req.url;
48
+
49
+ if(url == "/") {
50
+
51
+ // http://localhost/でアクセスしたときのため
52
+
53
+ url = "/client.html";
54
+
55
+ }
56
+
57
+
58
+
59
+ var filePath = "./public" + url;
60
+
61
+
62
+
63
+ fs.readFile(filePath, function (err, data) {
64
+
65
+ if (err) {
66
+
67
+ res.writeHead(500);
68
+
69
+ return res.end('Error loading ' + url);
70
+
71
+
72
+
73
+ }
74
+
75
+
76
+
77
+ var contentType = "";
78
+
79
+ if(req.url.endsWith(".html")) {
80
+
81
+ contentType = "text/html";
82
+
83
+ }
84
+
85
+
86
+
87
+ if(req.url.endsWith(".js")) {
88
+
89
+ contentType = "text/javascript";
90
+
91
+ }
92
+
93
+
94
+
95
+ // 他コンテンツタイプは自分で対応してください。
96
+
97
+
98
+
99
+ res.writeHead(200, { 'Content-Type': contentType + '; charset=UTF-8' });
100
+
101
+ console.log('サーバー接続');
102
+
103
+
104
+
105
+ res.end(data);
106
+
107
+
108
+
109
+ });
110
+
111
+ ```