Comments (16)
Hi,
it seems there has some illegal data.
To understand and narrow down this issue, could you please help confirm the following things:
- Only Firefox has this problem? no problem for Chrome or IE?
- Can you reproduce this problem with the official noVNC web? http://kanaka.github.io/noVNC/noVNC/vnc.html
--Hao
from websockify-nginx-module.
Hi,
I'm seeing the same problem with Chrome (35), Firefox (30) and IE (11).
-No, I'm not seeing the problem with the official noVNC websockify-
from websockify-nginx-module.
Wrong, I'm seeing the same problem with noVNC official web. It just doesn't happens always.
from websockify-nginx-module.
I just tried half an hour for Firefox + CentOS 6.5 X86_64, cannot reproduce it. And I will keep trying to reproduce it.
Besides, how often the encode error happened on your site?
from websockify-nginx-module.
8/10 times with nginx 1.6.0. Not so far with nginx 1.4.7.
Could be related to some change in nginx?
from websockify-nginx-module.
Using "websockify_send_flush on;" seems to solve the problem. So far no errors (i will keep checking).
Does it make any sense?
from websockify-nginx-module.
websockify_send_flush on
is not a good idea
that causes ngx to busy wait in order to send all buff to client
i checked the code found something may lead an encode problem
please refer to branch https://github.com/tg123/websockify-nginx-module/tree/issue1
tested if can fix your problem
from websockify-nginx-module.
I tested with issue1 branch, but I'm seeing the same error.
Using websockify_send_flush the problem dissapears. Could be that nginx returns partial data that cannot be decoded by noVNC and this closes the connection?
The vnc screen is painted but dissapears without being completed.
New state 'loaded', was 'disconnected'. Msg: noVNC ready: native WebSockets, canvas rendering
New state 'connect', was 'loaded'.
Skipping unsupported WebSocket binary sub-protocol
New state 'ProtocolVersion', was 'connect'. Msg: Starting VNC handshake
New state 'Security', was 'ProtocolVersion'. Msg: Sent ProtocolVersion: 003.003
New state 'Authentication', was 'Security'. Msg: Authenticating using scheme: 1
New state 'ClientInitialisation', was 'Authentication'. Msg: No auth required
New state 'ServerInitialisation', was 'ClientInitialisation'. Msg: Authentication OK
Server native red-shift is not 16
New state 'normal', was 'ServerInitialisation'. Msg: Connected (encrypted) to: XenServer Virtual Terminal
New state 'failed', was 'normal'. Msg: Disconnected: illegal hextile subencoding 90
Error while connected.
New state 'disconnected', was 'failed'.
WebSocket on-error event
WebSocket on-close event
Received onclose while disconnected (code: 1006)
from websockify-nginx-module.
Did you see the "encode error" in nginx log? if it is, then the connection should be dropped by back-end.
Because turn on the "websockify_send_flush" option helps, I think this problem might be the part of code about the buffer we cached.
We might need a bit more time to investigate this issue.
And, may I ask you help to enable the nginx debug logging? so that we can see how your nginx caches and sends the data. Thanks!
from websockify-nginx-module.
Many thanks to both of you for the interest!!! The alternatives to this nginx plugins are very poor...
Yes, I'm seeing the "encode error", and also a "decode error"
2014/06/28 19:55:45 [debug] 28506#0: *228 websockify : found SEC_WEBSOCKET_KEY : XunoftgV133epYWfJpqwPQ==
2014/06/28 19:55:45 [debug] 28506#0: *228 websockify : ngx_http_websockify_process_header
2014/06/28 19:55:45 [debug] 28506#0: *228 ngx_http_websockify_send_with_encode: sending data...[12]
2014/06/28 19:55:45 [debug] 28506#0: *228 ngx_http_websockify_send_buffer: sent buffer : 18 / 18
2014/06/28 19:55:45 [debug] 28506#0: *228 ngx_http_websockify_send_with_decode: [22]
2014/06/28 19:55:45 [debug] 28506#0: *228 ngx_http_websockify_send_buffer: sent buffer : 12 / 12
2014/06/28 19:55:45 [debug] 28506#0: *228 ngx_http_websockify_send_with_encode: sending data...[4]
2014/06/28 19:55:45 [debug] 28506#0: *228 ngx_http_websockify_send_buffer: sent buffer : 10 / 10
2014/06/28 19:55:46 [debug] 28506#0: *228 ngx_http_websockify_send_with_decode: [10]
2014/06/28 19:55:46 [debug] 28506#0: *228 ngx_http_websockify_send_buffer: sent buffer : 1 / 1
2014/06/28 19:55:46 [debug] 28506#0: *228 ngx_http_websockify_send_with_encode: sending data...[50]
2014/06/28 19:55:46 [debug] 28506#0: *228 ngx_http_websockify_send_buffer: sent buffer : 70 / 70
2014/06/28 19:55:46 [debug] 28506#0: *228 ngx_http_websockify_send_with_decode: [118]
2014/06/28 19:55:46 [debug] 28506#0: *228 ngx_http_websockify_send_buffer: sent buffer : 82 / 82
2014/06/28 19:55:46 [debug] 28506#0: *228 ngx_http_websockify_send_with_encode: sending data...[4096]
2014/06/28 19:55:46 [debug] 28506#0: *228 ngx_http_websockify_send_buffer: sent buffer : 5468 / 5468
2014/06/28 19:55:46 [debug] 28506#0: *228 ngx_http_websockify_send_with_encode: sending data...[12288]
2014/06/28 19:55:46 [debug] 28506#0: *228 ngx_http_websockify_send_buffer: sent buffer : -2 / 16388
2014/06/28 19:55:46 [debug] 28506#0: *228 ngx_http_websockify_send_with_encode: sending data...[16384]
2014/06/28 19:55:46 [debug] 28506#0: *228 ngx_http_websockify_send_with_encode: old buff not clean...[16388]
2014/06/28 19:55:46 [debug] 28506#0: *228 ngx_http_websockify_send_buffer: sent buffer : 16388 / 16388
2014/06/28 19:55:46 [debug] 28506#0: *228 ngx_http_websockify_send_buffer: sent buffer : 21852 / 21852
2014/06/28 19:55:46 [debug] 28506#0: *228 ngx_http_websockify_send_with_decode: [22]
2014/06/28 19:55:46 [debug] 28506#0: *228 ngx_http_websockify_send_buffer: sent buffer : 10 / 10
2014/06/28 19:55:46 [debug] 28506#0: *228 ngx_http_websockify_send_with_decode: [6]
2014/06/28 19:55:46 [error] 28506#0: *228 ngx_http_websockify_send_with_decode: decode error! while proxying upgraded connection, client: 10.2.96.253, server: name.domain, request: "GET /vnc/5003 HTTP/1.1", upstream: "websockify://127.0.0.1:5003", host: "name.domain"
2014/06/28 20:00:18 [debug] 28504#0: *621 websockify : found SEC_WEBSOCKET_KEY : Yg5NPU9gqTcMutABrje0GA==
2014/06/28 20:00:18 [debug] 28504#0: *621 websockify : ngx_http_websockify_process_header
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_with_encode: sending data...[12]
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_buffer: sent buffer : 18 / 18
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_with_decode: [22]
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_buffer: sent buffer : 12 / 12
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_with_encode: sending data...[4]
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_buffer: sent buffer : 10 / 10
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_with_decode: [10]
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_buffer: sent buffer : 1 / 1
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_with_encode: sending data...[50]
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_buffer: sent buffer : 70 / 70
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_with_decode: [118]
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_buffer: sent buffer : 82 / 82
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_with_encode: sending data...[4096]
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_buffer: sent buffer : 5468 / 5468
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_with_encode: sending data...[12288]
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_buffer: sent buffer : -2 / 16388
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_with_encode: sending data...[16384]
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_with_encode: old buff not clean...[16388]
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_buffer: sent buffer : 16388 / 16388
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_buffer: sent buffer : -2 / 21852
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_with_encode: sending data...[16384]
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_with_encode: old buff not clean...[21852]
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_buffer: sent buffer : 21852 / 21852
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_buffer: sent buffer : -2 / 21852
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_with_decode: [22]
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_buffer: sent buffer : 10 / 10
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_with_encode: sending data...[16384]
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_with_encode: old buff not clean...[21852]
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_buffer: sent buffer : -2 / 21852
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_buffer: sent buffer : -2 / 43704
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_with_encode: sending data...[16384]
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_with_encode: old buff not clean...[43704]
2014/06/28 20:00:18 [debug] 28504#0: *621 ngx_http_websockify_send_buffer: sent buffer : -2 / 43704
2014/06/28 20:00:18 [error] 28504#0: *621 ngx_http_websockify_send_with_encode: encode error! while proxying upgraded connection, client: 10.2.96.253, server: name.domain, request: "GET /vnc/5003 HTTP/1.1", upstream: "websockify://127.0.0.1:5003", host: "name.domain"
from websockify-nginx-module.
sorry, it is a bug.
buff overflow cause the encode error
(not enough buff space)
I am now working on it
from websockify-nginx-module.
thank you
reproduced
from websockify-nginx-module.
hi @fmbiete check out branch issue1
i think i have fixed it
from websockify-nginx-module.
Sorry, I'm seeing the same errors
2014/06/29 17:05:43 [debug] 15127#0: *79 websockify : found SEC_WEBSOCKET_KEY : TM4f01q6V8lqFN8EU8o1MQ==
2014/06/29 17:05:43 [debug] 15127#0: *79 websockify : ngx_http_websockify_process_header
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_with_encode: sending data...[12]
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_buffer: sent buffer : 18 / 18
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_with_decode: [22]
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_buffer: sent buffer : 12 / 12
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_with_encode: sending data...[4]
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_buffer: sent buffer : 10 / 10
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_with_decode: [10]
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_buffer: sent buffer : 1 / 1
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_with_encode: sending data...[50]
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_buffer: sent buffer : 70 / 70
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_with_decode: [118]
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_buffer: sent buffer : 82 / 82
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_with_encode: sending data...[4096]
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_buffer: sent buffer : 5468 / 5468
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_with_encode: sending data...[12288]
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_buffer: sent buffer : -2 / 16388
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_with_encode: sending data...[16384]
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_with_encode: old buff not clean...[16388]
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_buffer: sent buffer : 16388 / 16388
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_buffer: sent buffer : -2 / 21852
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_with_decode: [22]
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_buffer: sent buffer : 10 / 10
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_with_encode: sending data...[16384]
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_with_encode: old buff not clean...[21852]
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_buffer: sent buffer : 21852 / 21852
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_buffer: sent buffer : -2 / 21852
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_with_encode: sending data...[16384]
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_with_encode: old buff not clean...[21852]
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_buffer: sent buffer : 21852 / 21852
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_buffer: sent buffer : -2 / 21852
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_with_encode: sending data...[16384]
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_with_encode: old buff not clean...[21852]
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_buffer: sent buffer : 21852 / 21852
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_buffer: sent buffer : -2 / 21852
2014/06/29 17:05:43 [debug] 15127#0: *79 ngx_http_websockify_send_with_decode: [6]
2014/06/29 17:05:43 [error] 15127#0: *79 ngx_http_websockify_send_with_decode: decode error! while proxying upgraded connection, client: 10.2.96.253, server: name.domain, request: "GET /vnc/5003 HTTP/1.1", upstream: "websockify://127.0.0.1:5003", host: "name.domain"
2014/06/29 17:06:17 [debug] 15127#0: *132 websockify : found SEC_WEBSOCKET_KEY : HlUG5An/HrC5a8GKtmRjuA==
2014/06/29 17:06:17 [debug] 15127#0: *132 websockify : ngx_http_websockify_process_header
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_with_encode: sending data...[12]
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_buffer: sent buffer : 18 / 18
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_with_decode: [22]
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_buffer: sent buffer : 12 / 12
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_with_encode: sending data...[4]
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_buffer: sent buffer : 10 / 10
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_with_decode: [10]
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_buffer: sent buffer : 1 / 1
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_with_encode: sending data...[50]
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_buffer: sent buffer : 70 / 70
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_with_decode: [118]
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_buffer: sent buffer : 82 / 82
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_with_encode: sending data...[4096]
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_buffer: sent buffer : 5468 / 5468
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_with_encode: sending data...[12288]
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_buffer: sent buffer : -2 / 16388
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_with_encode: sending data...[16384]
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_with_encode: old buff not clean...[16388]
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_buffer: sent buffer : 16388 / 16388
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_buffer: sent buffer : -2 / 21852
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_with_decode: [22]
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_buffer: sent buffer : 10 / 10
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_with_encode: sending data...[16384]
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_with_encode: old buff not clean...[21852]
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_buffer: sent buffer : 21852 / 21852
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_buffer: sent buffer : -2 / 21852
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_with_encode: sending data...[16384]
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_with_encode: old buff not clean...[21852]
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_buffer: sent buffer : 21852 / 21852
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_buffer: sent buffer : -2 / 21852
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_with_encode: sending data...[16384]
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_with_encode: old buff not clean...[21852]
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_buffer: sent buffer : -2 / 21852
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_buffer: sent buffer : -2 / 43704
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_with_encode: sending data...[16384]
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_with_encode: old buff not clean...[43704]
2014/06/29 17:06:17 [debug] 15127#0: *132 ngx_http_websockify_send_buffer: sent buffer : -2 / 43704
2014/06/29 17:06:17 [error] 15127#0: *132 ngx_http_websockify_send_with_encode: encode error! while proxying upgraded connection, client: 10.2.96.253, server: name.domain, request: "GET /vnc/5003 HTTP/1.1", upstream: "websockify://127.0.0.1:5003", host: "name.domain"
from websockify-nginx-module.
hi @fmbiete are you sure your code is clean?
log should show ngx_http_websockify_send_buffer: add timer
after '-2 / xx'
from websockify-nginx-module.
True, I only updated the nginx-debug package and not the nginx package. Sorry.
With the latest "issue1" I'm not seeing the error. 20/20 tests ok so far
Thank you very much!!!
from websockify-nginx-module.
Related Issues (19)
- help me HOT 1
- Dockerfile HOT 1
- 单独使用websockify和nginx内置websockify的不同效果(代理转发失败) HOT 7
- 配置后不能用,返回400 HOT 2
- 内存问题 HOT 1
- websocket trans tcp? HOT 1
- websockify 模块主动断开同前后端的连接 HOT 7
- Will this work as a Dynamic module for nginx? HOT 1
- expose port 5901 if start with docker
- 通过websockify-nginx能不能实现二次转发 HOT 1
- websocket_server_write_frame_header函数建议返回头部长度 HOT 3
- can i stream my rtsp over this HOT 1
- can not work with http2 ssl enabled! HOT 3
- server send ping time duration! HOT 1
- fails to work with spice-html5 HOT 11
- WSS? HOT 2
- unix socket HOT 3
- Build fails with nginx 1.6.3 and 1.8.1 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from websockify-nginx-module.