Tôi đang cố gắng xây dựng một ứng dụng nhỏ trong các nút bấm để xuất bản và đăng ký. Tôi bị mắc kẹt trong cách tôi có thể xuất bản từ phía khách hàng. Đây là mã tôi có.Nodejs Xuất bản từ Khách hàng trong pub/sub
Đây là mã máy chủ của tôi (server.js)
var express = require('express'),
app = express(),
http = require('http'),
server = http.createServer(app);
app.use(express.bodyParser());
app.get('/', function(req, res) {
res.sendfile(__dirname + '/public/index.html');
});
app.post('/publish/:channel/:event/', function(req, res) {
console.log("**************************************");
var params = req.params;
console.log(req.params);
console.log(req.body);
var data = req.body;
console.log("**************************************");
var result = io.sockets.emit(params.channel,{event:params.event,data:data});
//console.log(result);
console.log("**************************************");
res.sendfile(__dirname + '/public/index.html');
});
//include static files
app.use(express.static(__dirname + '/public'));
server = server.listen(3000);
var io = require('socket.io').listen(server);
io.sockets.on('connection', function (s) {
socket = s
socket.emit('c1', { hello: 'world' });
socket.on('test', function (data) {
socket.emit('c1', { hello: 'world' });
console.log('test');console.log(data);
});
});
Và đây là mã khách hàng
var narad = {};
narad.url = 'http://192.168.0.46:3000';
narad.lisentingChannels = {}
var socket = io.connect(narad.url);
function Channel(channelName) {
this.channelName = channelName; //serviceObject is the object of
this.events = {};
};
Channel.prototype.bind = function (event, callback) {
this.events[event] = callback;
};
narad.subscribe = function (channelName) {
var channel = new Channel(channelName)
this.lisentingChannels[channelName] = channel;
socket.on(channelName, this.callbackBuilder(channel))
return this.lisentingChannels[channelName];
}
narad.callbackBuilder = function (channel) {
return function (data) {
var callback = channel.events[data["event"]];
callback(data.data);
}
}
Vui lòng giúp chúng tôi giúp bạn bằng cách thêm một số giải thích và/hoặc nhận xét về mã của bạn, đặc biệt là trên các chức năng gọi lại ổ cắm phía máy khách của bạn. Bạn muốn khách hàng của mình xuất bản dữ liệu ở đâu và theo cách nào? – matthias
Có vẻ như bạn đang cố sử dụng tuyến đường 'POST' để cho phép khách hàng xuất bản một sự kiện; đúng không? – floatingLomas