我想用Expressway使用Primus。 Primus作为websockets的抽象层。我用Primus的例子很好 - 我用了一个基本的Express例子 - 工作正常。但不知何故,我可以让他们一起工作。Primus with Express
的index.html(只是标准PRIMUS例如HTML)& primus.js在文件夹./public
下面是我在做什么。
var express = require('express');
var Primus = require('primus');
var http = require('http');
var path = require('path');
var app = express();
var server = require('http').createServer(app)
, primus = new Primus(server, { transformer: 'engine.io' });
app.set('port', process.env.PORT || 3000);
app.use(express.logger('dev'));
app.use(express.json()); // to support JSON-encoded bodies
app.use(express.urlencoded()); // to support URL-encoded bodies
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
// development only
if ('development' == app.get('env')) {
app.use(express.errorHandler());
}
primus.on('connection', function connection(spark) {
console.log('new connection');
spark.write({ Welcome: 'Hello!' });
});
primus.save(__dirname +'/public/primus.js');
/* the normal express start
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
*/
server.listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
输出访问
http://localhost:3000/index.html
Express server listening on port 3000
GET /index.html 200 73ms - 5.22kb
的index.html时正确地投放。但没有请求primus.js出现。和index.html显示了GET primus.js
400错误,当我在代码中禁用PRIMUS部分上方,然后使用普通快递开始我得到以下输出:
Express server listening on port 3000
GET /index.html 200 79ms - 5.22kb
GET /primus.js 200 69ms - 96.54kb
因此,所有送达正确。 Prmius在客户端工作,但当然没有人在服务器端回答,因为我禁用了primus。
任何想法有什么不对?
是的,这是 “/ PRIMUS” 的命名空间的问题是, “primus.js” 永不得到下载。我注意到我也可以通过配置中的'pathname'选项来更改命名空间(thx指向Arnout Kazemier)。现在也可以。 – Lars