UNPKG

3.71 kBJavaScriptView Raw
1'use strict';
2
3var diameter = require('../lib/diameter');
4
5
6var HOST = '127.0.0.1';
7var PORT = 3868;
8
9var options = {
10 beforeAnyMessage: diameter.logMessage,
11 afterAnyMessage: diameter.logMessage,
12};
13
14var server = diameter.createServer(options, function(socket) {
15 socket.on('diameterMessage', function(event) {
16 if (event.message.command === 'Capabilities-Exchange') {
17 event.response.body = event.response.body.concat([
18 ['Result-Code', 'DIAMETER_SUCCESS'],
19 ['Origin-Host', 'test.com'],
20 ['Origin-Realm', 'com'],
21 ['Host-IP-Address', '2001:db8:3312::1'],
22 ['Host-IP-Address', '1.2.3.4'],
23 ['Vendor-Id', 123],
24 ['Product-Name', 'node-diameter']
25 ]);
26 event.callback(event.response);
27 } else if (event.message.command === 'Credit-Control') {
28 event.response.body = event.response.body.concat([
29 ['Result-Code', 2001], // You can also define enum values by their integer codes
30 [264, 'test.com'], // or AVP names, this is 'Origin-Host'
31 ['Origin-Realm', 'com'],
32 ['Auth-Application-Id', 'Diameter Credit Control'],
33 ['CC-Request-Type', 'INITIAL_REQUEST'],
34 ['CC-Request-Number', 0],
35 ['Multiple-Services-Credit-Control', [
36 ['Granted-Service-Unit', [
37 ['CC-Time', 123],
38 ['CC-Money', [
39 ['Unit-Value', [
40 ['Value-Digits', 123],
41 ['Exponent', 1]
42 ]],
43 ['Currency-Code', 1]
44 ]],
45 ['CC-Total-Octets', 123],
46 ['CC-Input-Octets', 123],
47 ['CC-Output-Octets', 123]
48 ]],
49 ['Requested-Service-Unit', [
50 ['CC-Time', 123],
51 ['CC-Money', [
52 ['Unit-Value', [
53 ['Value-Digits', 123],
54 ['Exponent', 1]
55 ]],
56 ['Currency-Code', 1]
57 ]],
58 ['CC-Total-Octets', 123],
59 ['CC-Input-Octets', 123],
60 ['CC-Output-Octets', 123]
61 ]]
62 ]]
63 ]);
64 event.callback(event.response);
65 }
66
67 // Example server initiated message
68 setTimeout(function() {
69 console.log('Sending server initiated message');
70 var connection = socket.diameterConnection;
71 var request = connection.createRequest('Diameter Common Messages', 'Capabilities-Exchange');
72 request.body = request.body.concat([
73 [ 'Origin-Host', 'gx.pcef.com' ],
74 [ 'Origin-Realm', 'pcef.com' ],
75 [ 'Vendor-Id', 10415 ],
76 [ 'Origin-State-Id', 219081 ],
77 [ 'Supported-Vendor-Id', 10415 ],
78 [ 'Auth-Application-Id', 'Diameter Credit Control' ]
79 ]);
80 connection.sendRequest(request).then(function(response) {
81 console.log('Got response for server initiated message');
82 }, function(error) {
83 console.log('Error sending request: ' + error);
84 });
85 }, 2000);
86 });
87
88 socket.on('end', function() {
89 console.log('Client disconnected.');
90 });
91 socket.on('error', function(err) {
92 console.log(err);
93 });
94});
95
96server.listen(PORT, HOST);
97
98console.log('Started DIAMETER server on ' + HOST + ':' + PORT);