Nun, die Sache mit Knoten ist, es gibt Module für alles. Für alles gibt es eine "initial commit" und höchstwahrscheinlich in GitHub. In diesem Fall ist es Teil jeder App, vom Client aus eine Anfrage an den Server zu senden oder mit anderen Worten einen RPC-Anruf zu tätigen. Die grundlegende Transportmethode ist in diesem Fall Ajax. Und in einigen modernen Browsern haben wir Websockets. Für Ajax ist dies die einfachste Methode, die Sie etwas, was Sie wollen machen:
Auf Client-Seite:
var request.ajax('/ajax/setLolz', {data : 'nice', type : 'post'})
request.done(function(msg) {
$("#lolz").html(msg);
});
auf Server-Seite:
var url = reruire('url')
var http = require('http');
var lolz = 'wow';
var methods = {
'/ajax/setLolz' : function (action, body, res) {
res.end(lolz);
lolz = body;
someOtherFunction();
}
}
http.createServer(function (req, res) {
var body = '';
var action = url.parse(req.url);
req.on('body', function(text) {
body += text;
}
req.on('end', function() {
methods[action.path](action, body, res);
}
}).listen(1337, '127.0.0.1');
Das war einfach Ajax. Sie machen es ein wenig besser durch connect mit:
var connect = require('connect');
var app = connect()
.use(connect.bodyParser())
.use(function(req, res){
var action = url.parse(req.url);
methods[action.path](action, body, res);
})
.listen(1337);
Oder mehr einfacher mit express:
var app = require('express');
var app = express.createServer()
.use(express.bodyParser());
app.get('/ajax/setLolz', function(req, res){
res.end(lolz);
lolz = req.body;
someOtherFunction();
});
app.listen(1337);
Und ja, es gibt viele modules, die Ihnen helfen können.
Ab Websockets ist der schnellste WebSocket-Server, den ich kenne, ws. Obwohl einige Browser dies nicht unterstützen.
Auf Client-Seite:
websocket = new WebSocket('ws://www.host.com/ws');
websocket.onopen = function(evt) {
websocket.send(JSON.stringify({method : 'setLolz', msg : 'yes '};
};
websocket.onmessag = function(evt) {
$("#lolz").html(evt.data);
}
Auf Server:
var WebSocket = require('ws');
var ws = new WebSocket('ws://www.host.com/ws');
var methods = {
'setLolz' : function (msg, ws) {
ws.send(lolz);
lolz = msg;
someOtherFunction();
}
}
ws.on('message', function(data, flags) {
data = JSON.parse(data);
methods[data.method](data.msg);
});
Dann gibt es die socket.io, dass die Dinge viel einfacher macht. Es ist Cross-Browser und funktioniert überall. Erbaut auf Ajax und WebSockets und einigen anderen Methoden. Sie patchen alles auf Ereignisse. Sie können es sogar neben einem http-Server verwenden, der denselben Port abhört.
var io = require('socket.io').listen(1337);
io.sockets.on('connection', function (socket) {
socket.on('setLolz', function(data) {
socket.emit('lolz', lolz);
lolz = data;
});
socket.on('setLolz', someOtherFunction);// Yes, you can listen to an event with two functions
});
Aber es ist immer noch nicht einfach genug, so dass nun stelle ich Ihnen nowjs.
On-Browser:
now.setLolz(function(data){
$("#lolz").html(data);
});
Auf Server-Seite:
var nowjs = require("now");
var app = nowjs.initialize(httpServer);
app.now.setLolz = function(cb){
cb(lolz);
lolz = data;
someOtherFunction();
}
Ich will nicht in tiefer gehen, aber ich hoffe, dass Sie den Kern bekommen. Es gibt auch andere Module (Dnode, Hook.io, Flatiron, Railwayjs, Racer, Locomotivjs, ...), die Ihnen helfen können. Und ja, du kannst immer dein eigenes machen.
Glücklich Codierung ...: D
Vielen Dank! Sieht aus wie genau ich brauche! –
Cool! Markieren Sie die Antwort dann als die gute :-) –
Haben Sie Geduld! Es gibt trotzdem eine Zeitbeschränkung zwischen der Zeit, in der Sie eine Frage stellen, und der Zeit, in der Sie sie annehmen können. Aber natürlich, hier ist die grüne Zecke für Sie! –