我試圖按照指示在這裏Node.js的快遞3個不服務socket.io.js
但是,我似乎太愚蠢明白,爲什麼我不能引用socket.io.jss在客戶端。我在這裏讀類似的職位,但他們似乎並不正確:NodeJS Express not serving '/socket.io/socket.io.js'
下面是完整的應用程序清單:
var application_root = __dirname,
express = require('express'),
//Web framework
path = require('path'),
//Utilities for dealing with file paths
pg = require('pg'); //Postgres integration
//Create server
var app = express();
// Configure server
app.configure(function() {
//parses request body and populates request.body
app.use(express.bodyParser());
//checks request.body for HTTP method overrides
app.use(express.methodOverride());
//perform route lookup based on url and HTTP method
app.use(app.router);
//Where to serve static content
app.use(express.static(path.join(application_root, 'public')));
//Show all errors in development
app.use(express.errorHandler({
dumpExceptions: true,
showStack: true
}));
});
//Start server
var port = 4711;
app.listen(port, function() {
console.log('Express server listening on port %d in %s mode', port, app.settings.env);
});
//Start socket.io
var server = require('http').createServer(app),
io = require('socket.io').listen(server);
現在,如果我嘗試引用客戶端的JS,我得到一個404。
<script src="/socket.io/socket.io.js"></script>
任何人都知道爲什麼Express 3不允許socket.io爲其客戶端lib服務?
只是一個想法,但src應該以斜槓開頭。 'src =「/ socket.io/socket.io.js」相對路徑可能導致請求失敗,具體取決於當前頁面的url。 –
我認爲你是對的,但仍然會產生一個404 – metalaureate
我只是按原樣運行你的腳本,只有兩條附加行是'app.use(express.static(__ dirname));'爲示例中的html文件提供服務,和'server.listen(8080);'。它服務於socket.io.js就好了。無論你遇到什麼問題,都可能在你的代碼中的其他地方。我建議先從一個簡單的例子開始,然後發佈一個更完整的代碼片段。 –