Das Pendant zum XML-RPC Client,
der XML-RPC Server. Dieser nimmt in diesem Beispiel auf Port 1337 ab und verarbeitet die eingehenden Anfragen, wertet diese aus und sendet eine Antwort zurück.
Beispiel Script
/* Das Modul laden */
var fs = require('fs')
, xmlrpc = require('./xmlrpc/lib/node-xmlrpc.js')
/*
XML-RPC Server
*/
/*
Die verschiedenen Inhalte der Anfragen werden in verschiedenden Objekte hinterlegt.
*/
var serverContents = {
calls: []
, arrayValue: null
, booleanValue: null
, dateTimeValue: null
, doubleValue: null
, integerValue: null
, stringValue: null
, structValue: null
}
// XML-RPC Server erstellen
var serverOptions = {
host: 'localhost'
, port: 1337
}
// Hierbei kann man wie beim Client auch einen String fuer den Connect uebergeben.
// var serverOptions = 'http://localhost:9090'
var server = xmlrpc.createServer(serverOptions)
// Einen HTTPS XML-RPC Server starten
/*
var secureServerOptions = {
host: 'localhost'
, port: 443
, key: fs.readFileSync('./test-key.pem')
, cert: fs.readFileSync('./test-cert.pem')
}
var server = xmlrpc.createSecureServer(secureServerOptions)
*/
// Methoden fuer die verschiedenen Anfragen
// Arrays
// 'setArray' is the method call to listen for
server.on('setArray', function (err, params, callback) {
serverContents.calls.push('setArray')
serverContents.arrayValue = params[0]
callback()
})
server.on('getArray', function (err, params, callback) {
serverContents.calls.push('getArray')
callback(null, serverContents.arrayValue)
})
// Boolesche Werte
server.on('setBoolean', function (err, params, callback) {
serverContents.calls.push('setBoolean')
serverContents.booleanValue = params[0]
callback()
})
server.on('getBoolean', function (err, params, callback) {
serverContents.calls.push('getBoolean')
callback(null, serverContents.booleanValue)
})
// Datumswerte
server.on('setDate', function (err, params, callback) {
serverContents.calls.push('setDate')
serverContents.dateValue = params[0]
callback()
})
server.on('getDate', function (err, params, callback) {
serverContents.calls.push('getDate')
callback(null, serverContents.dateValue)
})
// Werte vom Typ Double
server.on('setDouble', function (err, params, callback) {
serverContents.calls.push('setDouble')
serverContents.doubleValue = params[0]
callback()
})
server.on('getDouble', function (err, params, callback) {
serverContents.calls.push('getDouble')
callback(null, serverContents.doubleValue)
})
// Integer Werte
server.on('setInteger', function (err, params, callback) {
serverContents.calls.push('setInteger')
serverContents.integerValue = params[0]
callback()
})
server.on('getInteger', function (err, params, callback) {
serverContents.calls.push('getInteger')
callback(null, serverContents.integerValue)
})
// String Werte
server.on('setString', function (err, params, callback) {
serverContents.calls.push('setString')
serverContents.stringValue = params[0]
callback()
})
server.on('getString', function (err, params, callback) {
serverContents.calls.push('getString')
callback(null, serverContents.stringValue)
})
// Strukturen/Objekte
server.on('setStruct', function (err, params, callback) {
serverContents.calls.push('setStruct')
serverContents.structValue = params[0]
callback()
})
server.on('getStruct', function (err, params, callback) {
serverContents.calls.push('getStruct')
callback(null, serverContents.structValue)
})
// Return a fault message
server.on('fakeFault', function (error, params, callback) {
serverContents.calls.push('fakeFault')
callback({ faultCode: 2, faultString: 'Uh oh.'}, null)
})

