4 <!-- include AutobahnJS .. that's all you need -->
5 <script src="../../lib/autobahn.min.js"></script>
6 <script language="javascript" type="text/javascript">
11 var mLog, mBus, mSender, mObject, mInterface, mSignal, mArgs, mUri;
13 // RPC success callback
14 function myAsyncFuncSuccessCB(res) {
15 log_append("subscribing to: " + res + "\n");
16 mSession.subscribe(res, sigHandler);
20 function myAsyncFuncErrorCB(error, desc) {
21 var str = error.desc ? error.desc : desc;
22 log_append("error: " + str + "\n");
25 window.onload = function() {
27 function onSessionAuthenticatedCB() { // WAMP session was authenticated
28 log_append("Session successfully connected.");
31 function onSessionConnectedCB(session) { // WAMP session was established
33 mSession.authreq().then(function() {
34 mSession.auth().then(onSessionAuthenticatedCB, myAsyncFuncErrorCB);
35 }, myAsyncFuncErrorCB);
38 function onSessionErrorCB(code, reason) { // WAMP session is gone
40 if (code == ab.CONNECTION_UNSUPPORTED) {
41 log_append("Browser is not supported");
43 log_append("Failed to open session, code = " + code + ", reason = " + reason);
47 mLog = document.getElementById('log');
48 mBus = document.getElementById('bus');
49 mSender = document.getElementById('sender');
50 mObject = document.getElementById('object');
51 mInterface = document.getElementById('interface');
52 mSignal = document.getElementById('signal');
53 mArgs = document.getElementById('args');
54 mUri = document.getElementById('uri');
56 // Connect to WAMP server
57 ab.connect(mUri.value, onSessionConnectedCB, onSessionErrorCB);
60 function sigHandler(id, data) {
61 log_append("got signal: " + id);
62 log_append("data: " + data + "\n");
65 function dbus_register()
67 log_append("dbusRegister: "
68 + mBus.options[mBus.selectedIndex].value + "\n\t"
69 + mSender.value + "\n\t"
70 + mObject.value + "\n\t"
71 + mInterface.value + "\n\t"
72 + mSignal.value + "\n"
76 mBus.options[mBus.selectedIndex].value,
83 // call dbusRegister with bus type, sender, object, and signal
84 mSession.call("dbusRegister", arglist).then(myAsyncFuncSuccessCB, myAsyncFuncErrorCB);
87 function log_append(message) {
88 mLog.innerHTML += message + '\n';
89 mLog.scrollTop = mLog.scrollHeight;
92 function clear_log() {
94 mLog.scrollTop = mLog.scrollHeight;
99 <center><h1>dbus-register</h1></center>
106 <option value="session">session</option>
107 <option value="system">system</option>
113 <td><input type="text" size="40" id="sender" value="org.gnome.ScreenSaver"/></td>
117 <td><input type="text" size="40" id="object" value="/org/gnome/ScreenSaver"/></td>
121 <td><input type="text" size="40" id="interface" value="org.gnome.ScreenSaver"/></td>
125 <td><input type="text" size="40" id="signal" value="ActiveChanged"/></td>
128 <td><input style="width:100%" type="button" value="register" onclick="dbus_register();"/></td>
129 <td><input type="text" size="40" id="uri" value="ws://localhost:9001"/></td>
133 <input type="button" value="clear log" onclick="clear_log();"/>
135 <pre id="log" style="height: 20em; overflow-y: scroll; background-color: #faa;"></pre>