Skip to content

Commit 35df585

Browse files
committed
initial working commit
1 parent c54aa19 commit 35df585

File tree

1,552 files changed

+169605
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,552 files changed

+169605
-0
lines changed

README

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
A robust full-featured Stomple client for JavaScript
2+
3+
Introduction in blog post:
4+
5+
http://blog.higher-order.net/2010/05/09/stomple-jms-via-websockets
6+
7+
Quick Demo:
8+
1) Start hornetq
9+
krukow:~/Projects/private/stomple$ ./hornetq/bin/run.sh ./hornetq/examples/jms/stomp-websockets/server0
10+
11+
Open example in a browser that supports WebSockets (e.g., Chrome)
12+
2) open example/transactional-chat.html
13+
14+
More info to come...

build.xml

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<project>
2+
<taskdef name="jslint"
3+
classname="com.googlecode.jslint4java.ant.JSLintTask"
4+
classpath="dev/jslint4java-1.3.3.jar" />
5+
<target name="jslint">
6+
<jslint options="undef,browser,eqeqeq,evil,forin" encoding="utf-8">
7+
<predef>WebSocket,console</predef>
8+
<formatter type="plain" />
9+
<fileset dir="src" includes="**/*.js" />
10+
</jslint>
11+
</target>
12+
</project>

build/stomple-min.js

+34
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build/stomple-min.js.gz

3.81 KB
Binary file not shown.

dev/jslint4java-1.3.3.jar

2.29 MB
Binary file not shown.

example/transactional-chat.html

+95
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2+
<html>
3+
<head>
4+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5+
<title>Stomp test</title>
6+
7+
<!-- INIT -->
8+
<script type="text/javascript" src="../src/stomple.js"></script>
9+
</head>
10+
<body><p>
11+
<label for="inputText">Message: </label>
12+
<input type="text" id="inputText" onkeydown='handleKeyDown(arguments[0]);'>
13+
<br>
14+
<button id="sendBtn" onclick='sendMsg();'>Send</button>
15+
<button id="resetBtn" onclick='reset();'>Reset</button>
16+
<button id="beginBtn" onclick='begin();'>Begin transaction</button>
17+
<button id="commitBtn" onclick='commit();'>Commit transaction</button>
18+
<button id="abortBtn" onclick='abort();'>Abort transaction</button>
19+
<p>
20+
Chat:<br>
21+
<div id="content"></div>
22+
<script type="text/javascript">
23+
24+
25+
function begin() {
26+
client.begin({});
27+
}
28+
function commit() {
29+
client.commit({});
30+
}
31+
function abort() {
32+
client.abort({});
33+
}
34+
function reset() {
35+
document.getElementById('inputText').value = '';
36+
document.getElementById('content').innerHTML = '';
37+
}
38+
var handleKeyDown = function (e) {
39+
e = e || window.event;
40+
var kc = e.keyCode,
41+
ki = e.keyIdentifier;
42+
if ((ki && ki.toLowerCase() === "enter") || (kc === 13)) {
43+
sendMsg();
44+
document.getElementById('inputText').value = '';
45+
}
46+
}
47+
function sendMsg() {
48+
var i = document.getElementById('inputText');
49+
client.send({
50+
body: client.session+": "+i.value,
51+
});
52+
}
53+
if (!Stomple) {
54+
document.getElementById('content').innerHTML = "Your browser doesn't support Stomple";
55+
document.getElementById('sendBtn').disabled = true;
56+
document.getElementById('resetBtn').disabled = true;
57+
document.getElementById('beginBtn').disabled = true;
58+
document.getElementById('commitBtn').disabled = true;
59+
document.getElementById('abortBtn').disabled = true;
60+
document.getElementById('inputText').readonly = true;
61+
handleKeyDown = function(){};
62+
} else {
63+
Stomple.debug = true;
64+
var client = Stomple.create_client({
65+
url: "ws://localhost:61614/stomp",
66+
destination: "jms.topic.chat",
67+
login: "guest",
68+
passcode: "guest"
69+
});
70+
var msgHandler = {
71+
fn: function(msg) {
72+
var c = document.getElementById('content');
73+
c.innerHTML = c.innerHTML + '<br>' + msg.body;
74+
}
75+
};
76+
client.subscribe({
77+
handler: msgHandler.fn,
78+
scope: msgHandler,
79+
80+
success: function() {//did subscription succeed?
81+
console.log("sub ok..");
82+
},
83+
failure: function() {//did subscription fail?
84+
console.log("sub fail");
85+
}
86+
});
87+
document.getElementById('inputText').focus();
88+
89+
}
90+
91+
92+
93+
</script>
94+
</body>
95+
</html>

example/transactional-chat.html~

+94
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2+
<html>
3+
<head>
4+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5+
<title>Stomp test</title>
6+
7+
<!-- INIT -->
8+
<script type="text/javascript" src="../src/stomple.js"></script>
9+
</head>
10+
<body><p>
11+
<label for="inputText">Message: </label>
12+
<input type="text" id="inputText" onkeydown='handleKeyDown(arguments[0]);'>
13+
<br>
14+
<button id="sendBtn" onclick='sendMsg();'>Send</button>
15+
<button id="resetBtn" onclick='reset();'>Reset</button>
16+
<button id="beginBtn" onclick='begin();'>Begin transaction</button>
17+
<button id="commitBtn" onclick='commit();'>Commit transaction</button>
18+
<button id="abortBtn" onclick='abort();'>Abort transaction</button>
19+
<p>
20+
Chat:<br>
21+
<div id="content"></div>
22+
<script type="text/javascript">
23+
24+
25+
function begin() {
26+
client.begin({});
27+
}
28+
function commit() {
29+
client.commit({});
30+
}
31+
function abort() {
32+
client.abort({});
33+
}
34+
function reset() {
35+
document.getElementById('inputText').value = '';
36+
document.getElementById('content').innerHTML = '';
37+
}
38+
var handleKeyDown = function (e) {
39+
e = e || window.event;
40+
var kc = e.keyCode,
41+
ki = e.keyIdentifier;
42+
if ((ki && ki.toLowerCase() === "enter") || (kc === 13)) {
43+
sendMsg();
44+
document.getElementById('inputText').value = '';
45+
}
46+
}
47+
function sendMsg() {
48+
var i = document.getElementById('inputText');
49+
client.send({
50+
body: client.session+": "+i.value,
51+
});
52+
}
53+
if (!Stomple) {
54+
document.getElementById('content').innerHTML = "Your browser doesn't support Stomple";
55+
document.getElementById('sendBtn').disabled = true;
56+
document.getElementById('resetBtn').disabled = true;
57+
document.getElementById('beginBtn').disabled = true;
58+
document.getElementById('commitBtn').disabled = true;
59+
document.getElementById('abortBtn').disabled = true;
60+
document.getElementById('inputText').readonly = true;
61+
handleKeyDown = function(){};
62+
} else {
63+
var client = Stomple.create_client({
64+
url: "ws://localhost:61614/stomp",
65+
destination: "jms.topic.chat",
66+
login: "guest",
67+
passcode: "guest"
68+
});
69+
var msgHandler = {
70+
fn: function(msg) {
71+
var c = document.getElementById('content');
72+
c.innerHTML = c.innerHTML + '<br>' + msg.body;
73+
}
74+
};
75+
client.subscribe({
76+
handler: msgHandler.fn,
77+
scope: msgHandler,
78+
79+
success: function() {//did subscription succeed?
80+
console.log("sub ok..");
81+
},
82+
failure: function() {//did subscription fail?
83+
console.log("sub fail");
84+
}
85+
});
86+
document.getElementById('inputText').focus();
87+
88+
}
89+
90+
91+
92+
</script>
93+
</body>
94+
</html>

hornetq/bin/#run.sh#

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#!/bin/sh
2+
3+
export HORNETQ_HOME=..
4+
mkdir -p ../logs
5+
# By default, the server is started in the non-clustered standalone configuration
6+
7+
if [ a"$1" = a ]; then CONFIG_DIR=hornetq/config/stand-alone/non-clustered; else CONFIG_DIR="$1"; fi
8+
if [ a"$2" = a ]; then FILENAME=hornetq-beans.xml; else FILENAME="$2"; fi
9+
10+
export CLASSPATH=$CONFIG_DIR:$HORNETQ_HOME/schemas/
11+
#you can use the following line if you want to run with different ports
12+
#export CLUSTER_PROPS="-Djnp.port=1099 -Djnp.rmiPort=1098 -Djnp.host=localhost -Dhornetq.remoting.netty.host=localhost -Dhornetq.remoting.netty.port=5445"
13+
export JVM_ARGS="$CLUSTER_PROPS -XX:+UseParallelGC -XX:+AggressiveOpts -XX:+UseFastAccessorMethods -Xms512M -Xmx1024M -Dhornetq.config.dir=$CONFIG_DIR -Djava.util.logging.config.file=$CONFIG_DIR/logging.properties -Djava.library.path=."
14+
#export JVM_ARGS="-Xmx512M -Djava.util.logging.config.file=$CONFIG_DIR/logging.properties -Dhornetq.config.dir=$CONFIG_DIR -Djava.library.path=. -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"
15+
16+
for i in `ls $HORNETQ_HOME/lib/*.jar`; do
17+
CLASSPATH=$i:$CLASSPATH
18+
done
19+
20+
echo "***********************************************************************************"
21+
echo "java $JVM_ARGS -classpath $CLASSPATH org.hornetq.integration.bootstrap.HornetQBootstrapServer $FILENAME"
22+
echo "***********************************************************************************"
23+
java $JVM_ARGS -classpath $CLASSPATH -Dcom.sun.management.jmxremote org.hornetq.integration.bootstrap.HornetQBootstrapServer $FILENAME

0 commit comments

Comments
 (0)