1
0
Fork 0
mirror of https://github.com/warmcat/libwebsockets.git synced 2025-03-09 00:00:04 +01:00

mirror-protocol-chrome-and-firefox.patch

Signed-off-by: Andy Green <andy@warmcat.com>
This commit is contained in:
Andy Green 2010-11-12 14:12:13 +00:00
parent 5b85482811
commit 5195968224
2 changed files with 35 additions and 22 deletions

View file

@ -37,7 +37,9 @@
* ascii string is sent down it every 50ms.
* If you send "reset\n" on the websocket, then
* the incrementing number is reset to 0.
*
*
* lws-mirror-protocol: copies any received packet to every connection also
* using this protocol, including the sender
*/
@ -127,7 +129,6 @@ callback_dumb_increment(struct libwebsocket * wsi,
/* lws-mirror_protocol */
#define MAX_MESSAGE_QUEUE 64
const int MAX_COMMUNE_MEMBERS = 20;
struct per_session_data__lws_mirror {
struct libwebsocket * wsi;
@ -135,7 +136,6 @@ struct per_session_data__lws_mirror {
};
struct a_message {
struct per_session_data * sender;
void * payload;
size_t len;
};
@ -144,9 +144,6 @@ static struct a_message ringbuffer[MAX_MESSAGE_QUEUE];
static int ringbuffer_head;
struct per_session_data * all_members;
static int
callback_lws_mirror(struct libwebsocket * wsi,
enum libwebsocket_callback_reasons reason,
@ -187,12 +184,13 @@ callback_lws_mirror(struct libwebsocket * wsi,
break;
case LWS_CALLBACK_RECEIVE:
// fprintf(stderr, "Received %d bytes payload\n", (int)len);
if (ringbuffer[ringbuffer_head].payload)
free(ringbuffer[ringbuffer_head].payload );
ringbuffer[ringbuffer_head].payload =
malloc(LWS_SEND_BUFFER_PRE_PADDING + len +
LWS_SEND_BUFFER_POST_PADDING);
ringbuffer[ringbuffer_head].len = len;
ringbuffer[ringbuffer_head].sender = pss;
memcpy(ringbuffer[ringbuffer_head].payload +
LWS_SEND_BUFFER_PRE_PADDING, in, len);
if (ringbuffer_head == (MAX_MESSAGE_QUEUE - 1))

View file

@ -69,17 +69,17 @@ function get_appropriate_ws_url(ads)
try {
socket_di.onopen = function() {
wsdi_statustd.style.backgroundColor = "#40ff40";
wsdi_status.textContent = " websocket connection opened ";
document.getElementById("wsdi_statustd").style.backgroundColor = "#40ff40";
document.getElementById("wsdi_status").textContent = " websocket connection opened ";
}
socket_di.onmessage =function got_packet(msg) {
number.textContent = msg.data + "\n";
document.getElementById("number").textContent = msg.data + "\n";
}
socket_di.onclose = function(){
wsdi_statustd.style.backgroundColor = "#ff4040";
wsdi_status.textContent = " websocket connection closed ";
document.getElementById("wsdi_statustd").style.backgroundColor = "#ff4040";
document.getElementById("wsdi_status").textContent = " websocket connection CLOSED ";
}
} catch(exception) {
alert('<p>Error' + exception);
@ -94,7 +94,7 @@ function reset() {
var down = 0;
var no_last = 1;
var last_x, last_y;
var last_x = 0, last_y = 0;
var ctx;
var socket_lm = new WebSocket(get_appropriate_ws_url("127.0.0.1:7681"),
"lws-mirror-protocol");
@ -102,8 +102,8 @@ function reset() {
try {
socket_lm.onopen = function() {
wslm_statustd.style.backgroundColor = "#40ff40";
wslm_status.textContent = " websocket connection opened ";
document.getElementById("wslm_statustd").style.backgroundColor = "#40ff40";
document.getElementById("wslm_status").textContent = " websocket connection opened ";
}
socket_lm.onmessage =function got_packet(msg) {
@ -111,15 +111,15 @@ function reset() {
if (i[0] == 'd') {
ctx.strokeStyle = i[1];
ctx.beginPath();
ctx.moveTo(i[2], i[3]);
ctx.lineTo(i[4], i[5]);
ctx.moveTo(+(i[2]), +(i[3]));
ctx.lineTo(+(i[4]), +(i[5]));
ctx.stroke();
}
}
socket_lm.onclose = function(){
wslm_statustd.style.backgroundColor = "#ff4040";
wslm_status.textContent = " websocket connection closed ";
document.getElementById("wslm_statustd").style.backgroundColor = "#ff4040";
document.getElementById("wslm_status").textContent = " websocket connection CLOSED ";
}
} catch(exception) {
alert('<p>Error' + exception);
@ -136,6 +136,15 @@ function reset() {
canvas.addEventListener('mousedown', ev_mousedown, false);
canvas.addEventListener('mouseup', ev_mouseup, false);
offsetX = offsetY = 0;
element = canvas;
if (element.offsetParent) {
do {
offsetX += element.offsetLeft;
offsetY += element.offsetTop;
} while ((element = element.offsetParent));
}
function update_color() {
color = document.getElementById("color").value;
}
@ -152,8 +161,14 @@ function ev_mouseup(ev) {
function ev_mousemove (ev) {
var x, y;
x = ev.offsetX;
y = ev.offsetY;
if (ev.offsetX) {
x = ev.offsetX;
y = ev.offsetY;
} else {
x = ev.layerX - offsetX;
y = ev.layerY - offsetY;
}
if (!down)
return;