我有一个节点应用程序,它使用restfy基于url路由请求。
现在想要将socket插入图片。但是当使用socket.io时,app不会重定向到该函数。我在flex中使用FlexSocket.IO库。
这是我的代码段。
// In app.js
var restify = require('restify')
, http = require('http')
,socket = require('./routes/socket');
var app = restify.createServer();
app.get('/', socket.handle);
app.post('/', socket.handle);
var io = require('socket.io').listen(app);
app.listen(8080, function() {
console.log('%s listening at %s', app.name, app.url);
});
io.configure(function() {
io.set('transports', ['websocket','flashsocket']);
io.set('flash policy port', 843);
});
exports.io = io;
//In socket.js
exports.handle = function (req, res, next) {
console.log('In Handle'); //doesn't print this
io.sockets.on('connection', function(client){
console.log('Connection establiished');
});
在Flex中
private var socket:FlashSocket;
socket = new FlashSocket("localhost:8080");
socket.addEventListener(FlashSocketEvent.CONNECT, onConnect);
socket.addEventListener(FlashSocketEvent.MESSAGE, onMessage);
protected function onConnect(event:FlashSocketEvent):void
{
Alert.show('connect'); //This alert is shown.
}
代码有什么问题吗?为什么socket.handle函数没有在节点中调用?
答案 0 :(得分:3)
在app.js中,尝试
var io = require('socket.io').listen(app.server); //app.server instead of just app