-
Notifications
You must be signed in to change notification settings - Fork 1k
Bash (ES)
Busindre edited this page Nov 3, 2016
·
1 revision
Antes de continuar, asegúrese que ha leído el Turotial en 10 minutos!
Hay cuatro partes con las que se trabajaran en este ejemplo. El script Manager.sh
manejará los otros scripts cuando sean necesarios.
- echo.sh
- count2.sh
- wsmanager.sh
- websocket.html
#!/bin/bash
#This script just echos a string or hello
if [ $# -gt 0 ]; then
echo $1
else
echo "Hello, Who are you?"
fi
exit
#!/bin/bash
#This is a modified version of the count.sh script in the ten minute tutorial
C=$1
if [ "$C" -eq "$C" ] 2>/dev/null; then
# $C is a number
for COUNT in $(seq 1 $C); do
echo $COUNT
sleep 1
done
else
echo "Sorry, I can't count to $C"
fi
exit
#!/bin/bash
#This script is a simple manager for all the other bash scripts.
#This way you only need one running websocketd process.
while read C
do
cdir=`pwd`
script=''
first=''
args=''
# does $C have arguments?
spcs=`echo $C | grep \ | wc -l`
if [ $spcs -eq 0 ]; then
first=$C
else
# read the first arg to determine what script to run
IFS=' ' read -a part <<< "$C"
first=${part[0]}
#remove the first part of the string, leave all the rest as args to pass to script
args=${C#${part[0]} }
fi
# which script to run?
if [ "$first" == "echo" ]; then
script='echo.sh'
elif [ "$first" == "count" ]; then
script='count2.sh'
fi
if [ ! -z $script ]; then
#echo $cdir/$script $args
eval $cdir/$script $args
else
echo "I don't understand: $C"
fi
done
exit
Usar JQuery ocasiona que Firefox no pueda interpretar contestaciones onmessage de Javascript desde websocketd.
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<title>Websocketd With Bash</title>
<style>
#wsresults {
font-size: 15px;
font-family: arial;
margin: auto;
padding: 10px;
text-align: left;
}
</style>
</head>
<body>
<div id="wsresults"></div>
<div><a href="javascript: void(0);" id="1">echo 'JoeWalnes was here'</a></div>
<div><a href="javascript: void(0);" id="2">echo</a></div>
<div><a href="javascript: void(0);" id="3">count to 10</a></div>
<div><a href="javascript: void(0);" id="4">count to Joe</a></div>
<script>
//https://github.com/joewalnes/websocketd
//https://github.com/joewalnes/websocketd/wiki/Websocketd-on-Raspberry-Pi
var ws = new WebSocket('ws://localhost:8080/');
ws.onopen = function() {
document.body.style.backgroundColor = '#cfc';
};
ws.onclose = function() {
document.body.style.backgroundColor = null;
};
ws.onerror = function(evt) {
$('#wsresults').html('Error: '+event.data);
};
ws.onmessage = function(event) {
$('#wsresults').html(event.data);
};
$(document).ready(function() {
$('#1').on('click', function(e){
if (ws) {
try {
ws.send("echo 'JoeWalnes was here.'");
} catch (ex) {
alert('Cannot send: '+ex);
}
}
});
$('#2').on('click', function(e){
if (ws) {
try {
ws.send('echo');
} catch (ex) {
alert('Cannot send: '+ex);
}
}
});
$('#3').on('click', function(e){
if (ws) {
try {
ws.send("count 10");
} catch (ex) {
alert('Cannot send: '+ex);
}
}
});
$('#4').on('click', function(e){
if (ws) {
try {
ws.send("count 'Joe'");
} catch (ex) {
alert('Cannot send: '+ex);
}
}
});
}); // end document ready
</script>
</body>
</html>
Ejecutar websocketd
a traves de la linea de comandos.
$ ./websocketd --port=8080 ./wsmanager.sh
Visitar la URL http://localhost:8080
The websocketd user guide is a publicly editable wiki. Please contribute!
Getting Started
Reference
Language specific
Advanced: Internals
Spanish Websocket Wiki
Primeros pasos
Referencia
Lenguajes
Avanzado