Giter Club home page Giter Club logo

humblenet's Introduction

HumbleNet

HumbleNet is a cross platform networking library that utilizes WebRTC and WebSockets to handle network communication.

Using WebRTC and Websockets allows HumbleNet to support not only traditional platforms such as Windows, OS X, and Linux, but also web platforms such as ASM.JS / Emscripten.

Language Support

HumbleNet is a simple clean C based API that allows for wrappers to be written for any language that offers C binding.

Included Language Bindings

  • C/C++
    • a simple C header is available for both C and C++ development. There is also a BSD socket wrapper that will redirect the C socket API through humblenet.
  • C#
    • wrappers are included that work in Unity for its Desktop and WebGL platform support. They should also work in any other .NET application.

Demo applications

We have several demos to show off integrating HumbleNet.

TestPeer

This is a simple "chat" app in the tests folder for both C and C#. The C app will run on Windows, MacOS X, Linux, and Emscripten. The C# will run on .NET or Mono.

Quake 2

We have a port of Quake2 (Based on R1Q2) that includes HumbleNet networking and runs on Windows, Mac OS X, Linux and Emscripten.

Quake 2 HumbleNet port

Quake 3

We have a port of Quake3 (Based on QuakeJS) that includes HumbleNet networking and runs on Windows, Mac OS X, Linux and Emscripten.

Quake 3 HumbleNet port

Build Instructions

Project Dependencies:

  1. CMake (https://cmake.org/):
    • Linux: use your preferred package manager, like apt-get.
    • Mac: can be installed using brew.
    • Win: download the installer via site https://cmake.org/download/.
  2. Make (https://www.gnu.org/software/make/manual/make.html)
    • Unix: already installed.
    • Win: you can use Cygwin.
  3. FlatBuffers (https://google.github.io/flatbuffers/index.html)
    • Download the source code. The HumbleNet is way behind the current version of FlatBuffers. It's using the version 1.6.0 (currently 1.7.1).
      1. You can download/clone the repo, and revert the master to commit 81ecc98e023f85fe003a27e920e78b34db8a0087 here.
      2. Or download the Release here. This should work (not tested).
    • Follow the instructions here (https://google.github.io/flatbuffers/flatbuffers_guide_building.html);
    • You should get as result the flatc compiler executable.
    • Put your output directory (where the flatc exists, generally a build dir) into your PATH, so the compiler can be accessed anywhere.
  4. Go Language here
    • Download and install the compiler via download page.
    • Test on your terminal if you can execute go version;
    • Tested here with version go1.9.1 darwin/amd64.

Compilation:

  1. Download the project from github;
  2. Go the downloaded folder;
  3. Create a build folder (just to better organize the output code) and enter the directory;
  4. Run the command: cmake .. (with 2 dots), this will configure into the directory all files needed to build the library;
  5. Now it's need to copy the FlatBuffers include files:
    1. Go to folder where you downloaded the FlatBuffers;
    2. Copy the folder flatbuffers inside the include dir;
    3. Go back to your <HumbleNetDir>/build folder;
    4. Paste the flatbuffers folder into the humblenet dir, along side the humblepeer_generated.h file;
    5. This folder contains the flatbuffers.h file, that is a source dependency.
  6. From the build folder you can run the make command alone, and it will try to build all code, or with the desired target, example:
    1. make all: will build all executables and libraries;
    2. make clean: will clean the directory, but mantain the config files;
    3. make humblenet_test_peer: build the test peer found in <HumberNetDir>/tests/test_peer.cpp;
    4. make peer-server: will build the test server found in <HumbleNetDir>/src/peer-server;

humblenet's People

Contributors

foobraco avatar ip-gpu avatar kant avatar metala avatar optikfluffel avatar urkle avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

humblenet's Issues

P2P networking throws exception about wrong connection state

Hello Folks,
sorry to bug, but I ran into a super odd problem. I have created a small server/client demo based on Emscripten, and run it in Chrome. Sadly, communication always terminates with a failed assert.

First of all, the server:

#include "humblenet.h"
#include "humblenet_p2p.h"
#include <stdio.h>
#include <emscripten.h>

#define CHANNEL 0
char buff[22222];


PeerId myPeer=0;
void main_loop()
{
	humblenet_p2p_wait(100);

	if (myPeer == 0) {
		printf("Finding ID...\n");
		myPeer = humblenet_p2p_get_my_peer_id();
		if (myPeer != 0) {
			printf("Link up \n");
			humblenet_p2p_register_alias("pattexreceiver");
		}
	}
	else{
		PeerId remotePeer = 0;
	        //int ret = humblenet_p2p_recvfrom(buff, sizeof(buff), &remotePeer, CHANNEL);
			//printf("RX from %d \n", ret);

			if (remotePeer != 0)
			{
				humblenet_p2p_sendto(" ", 2, remotePeer, SEND_RELIABLE, CHANNEL);
				printf("buff incoming ");
				printf(buff);
				printf("\n");
			}
	
	}
}

int main() {
  printf("Server up!\n");
  humblenet_init();
  humblenet_p2p_init("ws://localhost:8000/ws", "gametoken", "gamesecret", NULL);


  emscripten_set_main_loop( main_loop, 60, 1 );

  return 0;
}


In Chrome v59.0, he fails like this when the client comes up:

a.out.js:146 pre-main prep time: 8 ms
a.out.js:143 Server up!
a.out.js:143 humblenet_p2p_init
a.out.js:143 Sanitize callback #10
a.out.js:143 Adding promise support to: setLocalDescription
a.out.js:143 Adding promise support to: setRemoteDescription
a.out.js:143 Adding promise support to: addIceCandidate
a.out.js:143 Sanitize callback #1
a.out.js:143 Sanitize callback #2
a.out.js:143 Sanitize callback #5
a.out.js:143 Sanitize callback #6
a.out.js:143 connecting to signaling server "ws://localhost:8000/ws" with gameToken "gametoken" 
a.out.js:143 new wsi: 0x50d150
a.out.js:143 Finding ID...
a.out.js:143 Finding ID...
a.out.js:143 Finding ID...
a.out.js:143 Finding ID...
a.out.js:143 Finding ID...
a.out.js:143 Finding ID...
a.out.js:143 Finding ID...
a.out.js:143 Finding ID...
a.out.js:143 Finding ID...
a.out.js:143 Finding ID...
a.out.js:143 Finding ID...
a.out.js:143 Finding ID...
a.out.js:143 Finding ID...
a.out.js:143 Finding ID...
a.out.js:143 Finding ID...
a.out.js:143 Finding ID...
a.out.js:143 Finding ID...
a.out.js:143 Finding ID...
a.out.js:143 0 -> 9 -> 0xbf80 -> 10
a.out.js:143 0 -> 3 -> 0 -> 0
a.out.js:143 Finding ID...
a.out.js:143 0 -> 6 -> 0xbf80 -> 52
a.out.js:143 My peer id is 1
a.out.js:143 No STUN/TURN credentials provided by the server
a.out.js:143 Finding ID...
a.out.js:143 Link up 
a.out.js:143 0 -> 6 -> 0xbf80 -> 572
a.out.js:143 P2PConnect SDP got 2's offer = "v=0
a.out.js:143 o=- 7219164196760262854 2 IN IP4 127.0.0.1
a.out.js:143 s=-
a.out.js:143 t=0 0
a.out.js:143 a=group:BUNDLE data
a.out.js:143 a=msid-semantic: WMS
a.out.js:143 m=application 50868 DTLS/SCTP 5000
a.out.js:143 c=IN IP4 192.168.0.113
a.out.js:143 a=candidate:1356517016 1 udp 2113937151 192.168.0.113 50868 typ host generation 0 network-cost 50
a.out.js:143 a=ice-ufrag:GLBM
a.out.js:143 a=ice-pwd:hPvJwp6QjDqfUjcDif/E3Zpo
a.out.js:143 a=fingerprint:sha-256 6E:64:BC:1E:FF:B9:53:8E:21:9A:4D:55:E0:6D:91:72:BC:86:E6:BB:29:54:8B:86:AF:C5:4A:BF:9C:0A:78:A1
a.out.js:143 a=setup:actpass
a.out.js:143 a=mid:data
a.out.js:143 a=sctpmap:5000 webrtc-datachannel 1024
a.out.js:143 "
a.out.js:143 signalingState: stable
a.out.js:143 signalingState: stable
a.out.js:143 icestate: checking / iceGatheringState: complete
a.out.js:143 ice candidate candidate:1356517016 1 udp 2113937151 192.168.0.113 50870 typ host generation 0 ufrag w4rH network-cost 50 -- complete
a.out.js:143 no more candidates: complete
a.out.js:143 P2PConnect SDP sent 2 response offer = "v=0
a.out.js:143 o=- 1579204060256316713 2 IN IP4 127.0.0.1
a.out.js:143 s=-
a.out.js:143 t=0 0
a.out.js:143 a=group:BUNDLE data
a.out.js:143 a=msid-semantic: WMS
a.out.js:143 m=application 50870 DTLS/SCTP 5000
a.out.js:143 c=IN IP4 192.168.0.113
a.out.js:143 b=AS:30
a.out.js:143 a=candidate:1356517016 1 udp 2113937151 192.168.0.113 50870 typ host generation 0 network-cost 50
a.out.js:143 a=ice-ufrag:w4rH
a.out.js:143 a=ice-pwd:UKtp5lFU0D8Sd2FzpltOB2un
a.out.js:143 a=fingerprint:sha-256 D1:F8:52:9E:FE:98:71:54:F6:7D:4B:37:AC:BF:BB:6E:EA:59:3D:09:9E:58:A9:C7:CE:A5:16:3F:D9:26:03:F2
a.out.js:143 a=setup:active
a.out.js:143 a=mid:data
a.out.js:143 a=sctpmap:5000 webrtc-datachannel 1024
a.out.js:143 "
a.out.js:143 icestate: connected / iceGatheringState: complete
a.out.js:143 connected peer: 2
a.out.js:143 datachannel
a.out.js:1674 Uncaught Assertion failed: conn->status == HUMBLENET_CONNECTION_CONNECTED, at: humblenet_asmjs_amalgam.cpp,3527,on_data at Error
    at jsStackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1173:13)
    at stackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1190:22)
    at ___assert_fail (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1674:210)
    at Array.__Z7on_dataP17internal_socket_tPKviPv [on_data(internal_socket_t*, void const*, int, void*)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:8654:3)
    at Array.__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i [webrtc_protocol(libwebrtc_context*, libwebrtc_connection*, libwebrtc_data_channel*, libwebrtc_callback_reasons, void*, void*, int)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:14312:41)
    at _libwebrtc_helper (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:15033:42)
    at Object.asm._libwebrtc_helper [as on_event] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:103886:31)
    at RTCDataChannel.libwebrtc.on_channel_message (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1575:6261)
___assert_fail @ a.out.js:1674
__Z7on_dataP17internal_socket_tPKviPv @ a.out.js:8654
__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i @ a.out.js:14312
_libwebrtc_helper @ a.out.js:15033
asm._libwebrtc_helper @ a.out.js:103886
libwebrtc.on_channel_message @ a.out.js:1575
a.out.js:1674 Uncaught Assertion failed: conn->status == HUMBLENET_CONNECTION_CONNECTED, at: humblenet_asmjs_amalgam.cpp,3527,on_data at Error
    at jsStackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1173:13)
    at stackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1190:22)
    at ___assert_fail (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1674:210)
    at Array.__Z7on_dataP17internal_socket_tPKviPv [on_data(internal_socket_t*, void const*, int, void*)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:8654:3)
    at Array.__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i [webrtc_protocol(libwebrtc_context*, libwebrtc_connection*, libwebrtc_data_channel*, libwebrtc_callback_reasons, void*, void*, int)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:14312:41)
    at _libwebrtc_helper (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:15033:42)
    at Object.asm._libwebrtc_helper [as on_event] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:103886:31)
    at RTCDataChannel.libwebrtc.on_channel_message (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1575:6261)
___assert_fail @ a.out.js:1674
__Z7on_dataP17internal_socket_tPKviPv @ a.out.js:8654
__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i @ a.out.js:14312
_libwebrtc_helper @ a.out.js:15033
asm._libwebrtc_helper @ a.out.js:103886
libwebrtc.on_channel_message @ a.out.js:1575
a.out.js:1674 Uncaught Assertion failed: conn->status == HUMBLENET_CONNECTION_CONNECTED, at: humblenet_asmjs_amalgam.cpp,3527,on_data at Error
    at jsStackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1173:13)
    at stackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1190:22)
    at ___assert_fail (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1674:210)
    at Array.__Z7on_dataP17internal_socket_tPKviPv [on_data(internal_socket_t*, void const*, int, void*)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:8654:3)
    at Array.__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i [webrtc_protocol(libwebrtc_context*, libwebrtc_connection*, libwebrtc_data_channel*, libwebrtc_callback_reasons, void*, void*, int)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:14312:41)
    at _libwebrtc_helper (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:15033:42)
    at Object.asm._libwebrtc_helper [as on_event] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:103886:31)
    at RTCDataChannel.libwebrtc.on_channel_message (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1575:6261)
___assert_fail @ a.out.js:1674
__Z7on_dataP17internal_socket_tPKviPv @ a.out.js:8654
__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i @ a.out.js:14312
_libwebrtc_helper @ a.out.js:15033
asm._libwebrtc_helper @ a.out.js:103886
libwebrtc.on_channel_message @ a.out.js:1575
a.out.js:1674 Uncaught Assertion failed: conn->status == HUMBLENET_CONNECTION_CONNECTED, at: humblenet_asmjs_amalgam.cpp,3527,on_data at Error
    at jsStackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1173:13)
    at stackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1190:22)
    at ___assert_fail (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1674:210)
    at Array.__Z7on_dataP17internal_socket_tPKviPv [on_data(internal_socket_t*, void const*, int, void*)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:8654:3)
    at Array.__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i [webrtc_protocol(libwebrtc_context*, libwebrtc_connection*, libwebrtc_data_channel*, libwebrtc_callback_reasons, void*, void*, int)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:14312:41)
    at _libwebrtc_helper (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:15033:42)
    at Object.asm._libwebrtc_helper [as on_event] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:103886:31)
    at RTCDataChannel.libwebrtc.on_channel_message (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1575:6261)
___assert_fail @ a.out.js:1674
__Z7on_dataP17internal_socket_tPKviPv @ a.out.js:8654
__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i @ a.out.js:14312
_libwebrtc_helper @ a.out.js:15033
asm._libwebrtc_helper @ a.out.js:103886
libwebrtc.on_channel_message @ a.out.js:1575
a.out.js:1674 Uncaught Assertion failed: conn->status == HUMBLENET_CONNECTION_CONNECTED, at: humblenet_asmjs_amalgam.cpp,3527,on_data at Error
    at jsStackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1173:13)
    at stackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1190:22)
    at ___assert_fail (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1674:210)
    at Array.__Z7on_dataP17internal_socket_tPKviPv [on_data(internal_socket_t*, void const*, int, void*)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:8654:3)
    at Array.__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i [webrtc_protocol(libwebrtc_context*, libwebrtc_connection*, libwebrtc_data_channel*, libwebrtc_callback_reasons, void*, void*, int)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:14312:41)
    at _libwebrtc_helper (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:15033:42)
    at Object.asm._libwebrtc_helper [as on_event] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:103886:31)
    at RTCDataChannel.libwebrtc.on_channel_message (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1575:6261)
___assert_fail @ a.out.js:1674
__Z7on_dataP17internal_socket_tPKviPv @ a.out.js:8654
__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i @ a.out.js:14312
_libwebrtc_helper @ a.out.js:15033
asm._libwebrtc_helper @ a.out.js:103886
libwebrtc.on_channel_message @ a.out.js:1575
a.out.js:1674 Uncaught Assertion failed: conn->status == HUMBLENET_CONNECTION_CONNECTED, at: humblenet_asmjs_amalgam.cpp,3527,on_data at Error
    at jsStackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1173:13)
    at stackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1190:22)
    at ___assert_fail (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1674:210)
    at Array.__Z7on_dataP17internal_socket_tPKviPv [on_data(internal_socket_t*, void const*, int, void*)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:8654:3)
    at Array.__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i [webrtc_protocol(libwebrtc_context*, libwebrtc_connection*, libwebrtc_data_channel*, libwebrtc_callback_reasons, void*, void*, int)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:14312:41)
    at _libwebrtc_helper (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:15033:42)
    at Object.asm._libwebrtc_helper [as on_event] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:103886:31)
    at RTCDataChannel.libwebrtc.on_channel_message (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1575:6261)
___assert_fail @ a.out.js:1674
__Z7on_dataP17internal_socket_tPKviPv @ a.out.js:8654
__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i @ a.out.js:14312
_libwebrtc_helper @ a.out.js:15033
asm._libwebrtc_helper @ a.out.js:103886
libwebrtc.on_channel_message @ a.out.js:1575
a.out.js:1674 Uncaught Assertion failed: conn->status == HUMBLENET_CONNECTION_CONNECTED, at: humblenet_asmjs_amalgam.cpp,3527,on_data at Error
    at jsStackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1173:13)
    at stackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1190:22)
    at ___assert_fail (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1674:210)
    at Array.__Z7on_dataP17internal_socket_tPKviPv [on_data(internal_socket_t*, void const*, int, void*)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:8654:3)
    at Array.__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i [webrtc_protocol(libwebrtc_context*, libwebrtc_connection*, libwebrtc_data_channel*, libwebrtc_callback_reasons, void*, void*, int)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:14312:41)
    at _libwebrtc_helper (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:15033:42)
    at Object.asm._libwebrtc_helper [as on_event] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:103886:31)
    at RTCDataChannel.libwebrtc.on_channel_message (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1575:6261)
___assert_fail @ a.out.js:1674
__Z7on_dataP17internal_socket_tPKviPv @ a.out.js:8654
__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i @ a.out.js:14312
_libwebrtc_helper @ a.out.js:15033
asm._libwebrtc_helper @ a.out.js:103886
libwebrtc.on_channel_message @ a.out.js:1575
a.out.js:1674 Uncaught Assertion failed: conn->status == HUMBLENET_CONNECTION_CONNECTED, at: humblenet_asmjs_amalgam.cpp,3527,on_data at Error
    at jsStackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1173:13)
    at stackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1190:22)
    at ___assert_fail (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1674:210)
    at Array.__Z7on_dataP17internal_socket_tPKviPv [on_data(internal_socket_t*, void const*, int, void*)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:8654:3)
    at Array.__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i [webrtc_protocol(libwebrtc_context*, libwebrtc_connection*, libwebrtc_data_channel*, libwebrtc_callback_reasons, void*, void*, int)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:14312:41)
    at _libwebrtc_helper (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:15033:42)
    at Object.asm._libwebrtc_helper [as on_event] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:103886:31)
    at RTCDataChannel.libwebrtc.on_channel_message (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1575:6261)
___assert_fail @ a.out.js:1674
__Z7on_dataP17internal_socket_tPKviPv @ a.out.js:8654
__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i @ a.out.js:14312
_libwebrtc_helper @ a.out.js:15033
asm._libwebrtc_helper @ a.out.js:103886
libwebrtc.on_channel_message @ a.out.js:1575
a.out.js:1674 Uncaught Assertion failed: conn->status == HUMBLENET_CONNECTION_CONNECTED, at: humblenet_asmjs_amalgam.cpp,3527,on_data at Error
    at jsStackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1173:13)
    at stackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1190:22)
    at ___assert_fail (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1674:210)
    at Array.__Z7on_dataP17internal_socket_tPKviPv [on_data(internal_socket_t*, void const*, int, void*)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:8654:3)
    at Array.__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i [webrtc_protocol(libwebrtc_context*, libwebrtc_connection*, libwebrtc_data_channel*, libwebrtc_callback_reasons, void*, void*, int)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:14312:41)
    at _libwebrtc_helper (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:15033:42)
    at Object.asm._libwebrtc_helper [as on_event] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:103886:31)
    at RTCDataChannel.libwebrtc.on_channel_message (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1575:6261)
___assert_fail @ a.out.js:1674
__Z7on_dataP17internal_socket_tPKviPv @ a.out.js:8654
__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i @ a.out.js:14312
_libwebrtc_helper @ a.out.js:15033
asm._libwebrtc_helper @ a.out.js:103886
libwebrtc.on_channel_message @ a.out.js:1575
a.out.js:1674 Uncaught Assertion failed: conn->status == HUMBLENET_CONNECTION_CONNECTED, at: humblenet_asmjs_amalgam.cpp,3527,on_data at Error
    at jsStackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1173:13)
    at stackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1190:22)
    at ___assert_fail (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1674:210)
    at Array.__Z7on_dataP17internal_socket_tPKviPv [on_data(internal_socket_t*, void const*, int, void*)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:8654:3)
    at Array.__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i [webrtc_protocol(libwebrtc_context*, libwebrtc_connection*, libwebrtc_data_channel*, libwebrtc_callback_reasons, void*, void*, int)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:14312:41)
    at _libwebrtc_helper (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:15033:42)
    at Object.asm._libwebrtc_helper [as on_event] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:103886:31)
    at RTCDataChannel.libwebrtc.on_channel_message (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1575:6261)
___assert_fail @ a.out.js:1674
__Z7on_dataP17internal_socket_tPKviPv @ a.out.js:8654
__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i @ a.out.js:14312
_libwebrtc_helper @ a.out.js:15033
asm._libwebrtc_helper @ a.out.js:103886
libwebrtc.on_channel_message @ a.out.js:1575
a.out.js:1674 Uncaught Assertion failed: conn->status == HUMBLENET_CONNECTION_CONNECTED, at: humblenet_asmjs_amalgam.cpp,3527,on_data at Error
    at jsStackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1173:13)
    at stackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1190:22)
    at ___assert_fail (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1674:210)
    at Array.__Z7on_dataP17internal_socket_tPKviPv [on_data(internal_socket_t*, void const*, int, void*)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:8654:3)
    at Array.__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i [webrtc_protocol(libwebrtc_context*, libwebrtc_connection*, libwebrtc_data_channel*, libwebrtc_callback_reasons, void*, void*, int)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:14312:41)
    at _libwebrtc_helper (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:15033:42)
    at Object.asm._libwebrtc_helper [as on_event] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:103886:31)
    at RTCDataChannel.libwebrtc.on_channel_message (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1575:6261)
___assert_fail @ a.out.js:1674
__Z7on_dataP17internal_socket_tPKviPv @ a.out.js:8654
__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i @ a.out.js:14312
_libwebrtc_helper @ a.out.js:15033
asm._libwebrtc_helper @ a.out.js:103886
libwebrtc.on_channel_message @ a.out.js:1575
a.out.js:1674 Uncaught Assertion failed: conn->status == HUMBLENET_CONNECTION_CONNECTED, at: humblenet_asmjs_amalgam.cpp,3527,on_data at Error
    at jsStackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1173:13)
    at stackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1190:22)
    at ___assert_fail (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1674:210)
    at Array.__Z7on_dataP17internal_socket_tPKviPv [on_data(internal_socket_t*, void const*, int, void*)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:8654:3)
    at Array.__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i [webrtc_protocol(libwebrtc_context*, libwebrtc_connection*, libwebrtc_data_channel*, libwebrtc_callback_reasons, void*, void*, int)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:14312:41)
    at _libwebrtc_helper (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:15033:42)
    at Object.asm._libwebrtc_helper [as on_event] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:103886:31)
    at RTCDataChannel.libwebrtc.on_channel_message (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1575:6261)
___assert_fail @ a.out.js:1674
__Z7on_dataP17internal_socket_tPKviPv @ a.out.js:8654
__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i @ a.out.js:14312
_libwebrtc_helper @ a.out.js:15033
asm._libwebrtc_helper @ a.out.js:103886
libwebrtc.on_channel_message @ a.out.js:1575
a.out.js:1674 Uncaught Assertion failed: conn->status == HUMBLENET_CONNECTION_CONNECTED, at: humblenet_asmjs_amalgam.cpp,3527,on_data at Error
    at jsStackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1173:13)
    at stackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1190:22)
    at ___assert_fail (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1674:210)
    at Array.__Z7on_dataP17internal_socket_tPKviPv [on_data(internal_socket_t*, void const*, int, void*)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:8654:3)
    at Array.__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i [webrtc_protocol(libwebrtc_context*, libwebrtc_connection*, libwebrtc_data_channel*, libwebrtc_callback_reasons, void*, void*, int)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:14312:41)
    at _libwebrtc_helper (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:15033:42)
    at Object.asm._libwebrtc_helper [as on_event] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:103886:31)
    at RTCDataChannel.libwebrtc.on_channel_message (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1575:6261)
___assert_fail @ a.out.js:1674
__Z7on_dataP17internal_socket_tPKviPv @ a.out.js:8654
__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i @ a.out.js:14312
_libwebrtc_helper @ a.out.js:15033
asm._libwebrtc_helper @ a.out.js:103886
libwebrtc.on_channel_message @ a.out.js:1575
a.out.js:1674 Uncaught Assertion failed: conn->status == HUMBLENET_CONNECTION_CONNECTED, at: humblenet_asmjs_amalgam.cpp,3527,on_data at Error
    at jsStackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1173:13)
    at stackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1190:22)
    at ___assert_fail (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1674:210)
    at Array.__Z7on_dataP17internal_socket_tPKviPv [on_data(internal_socket_t*, void const*, int, void*)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:8654:3)
    at Array.__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i [webrtc_protocol(libwebrtc_context*, libwebrtc_connection*, libwebrtc_data_channel*, libwebrtc_callback_reasons, void*, void*, int)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:14312:41)
    at _libwebrtc_helper (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:15033:42)
    at Object.asm._libwebrtc_helper [as on_event] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:103886:31)
    at RTCDataChannel.libwebrtc.on_channel_message (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1575:6261)
___assert_fail @ a.out.js:1674
__Z7on_dataP17internal_socket_tPKviPv @ a.out.js:8654
__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i @ a.out.js:14312
_libwebrtc_helper @ a.out.js:15033
asm._libwebrtc_helper @ a.out.js:103886
libwebrtc.on_channel_message @ a.out.js:1575
a.out.js:1674 Uncaught Assertion failed: conn->status == HUMBLENET_CONNECTION_CONNECTED, at: humblenet_asmjs_amalgam.cpp,3527,on_data at Error
    at jsStackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1173:13)
    at stackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1190:22)
    at ___assert_fail (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1674:210)
    at Array.__Z7on_dataP17internal_socket_tPKviPv [on_data(internal_socket_t*, void const*, int, void*)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:8654:3)
    at Array.__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i [webrtc_protocol(libwebrtc_context*, libwebrtc_connection*, libwebrtc_data_channel*, libwebrtc_callback_reasons, void*, void*, int)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:14312:41)
    at _libwebrtc_helper (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:15033:42)
    at Object.asm._libwebrtc_helper [as on_event] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:103886:31)
    at RTCDataChannel.libwebrtc.on_channel_message (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1575:6261)
___assert_fail @ a.out.js:1674
__Z7on_dataP17internal_socket_tPKviPv @ a.out.js:8654
__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i @ a.out.js:14312
_libwebrtc_helper @ a.out.js:15033
asm._libwebrtc_helper @ a.out.js:103886
libwebrtc.on_channel_message @ a.out.js:1575
a.out.js:1674 Uncaught Assertion failed: conn->status == HUMBLENET_CONNECTION_CONNECTED, at: humblenet_asmjs_amalgam.cpp,3527,on_data at Error
    at jsStackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1173:13)
    at stackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1190:22)
    at ___assert_fail (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1674:210)
    at Array.__Z7on_dataP17internal_socket_tPKviPv [on_data(internal_socket_t*, void const*, int, void*)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:8654:3)
    at Array.__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i [webrtc_protocol(libwebrtc_context*, libwebrtc_connection*, libwebrtc_data_channel*, libwebrtc_callback_reasons, void*, void*, int)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:14312:41)
    at _libwebrtc_helper (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:15033:42)
    at Object.asm._libwebrtc_helper [as on_event] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:103886:31)
    at RTCDataChannel.libwebrtc.on_channel_message (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1575:6261)
___assert_fail @ a.out.js:1674
__Z7on_dataP17internal_socket_tPKviPv @ a.out.js:8654
__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i @ a.out.js:14312
_libwebrtc_helper @ a.out.js:15033
asm._libwebrtc_helper @ a.out.js:103886
libwebrtc.on_channel_message @ a.out.js:1575
a.out.js:1674 Uncaught Assertion failed: conn->status == HUMBLENET_CONNECTION_CONNECTED, at: humblenet_asmjs_amalgam.cpp,3527,on_data at Error
    at jsStackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1173:13)
    at stackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1190:22)
    at ___assert_fail (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1674:210)
    at Array.__Z7on_dataP17internal_socket_tPKviPv [on_data(internal_socket_t*, void const*, int, void*)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:8654:3)
    at Array.__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i [webrtc_protocol(libwebrtc_context*, libwebrtc_connection*, libwebrtc_data_channel*, libwebrtc_callback_reasons, void*, void*, int)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:14312:41)
    at _libwebrtc_helper (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:15033:42)
    at Object.asm._libwebrtc_helper [as on_event] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:103886:31)
    at RTCDataChannel.libwebrtc.on_channel_message (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1575:6261)
___assert_fail @ a.out.js:1674
__Z7on_dataP17internal_socket_tPKviPv @ a.out.js:8654
__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i @ a.out.js:14312
_libwebrtc_helper @ a.out.js:15033
asm._libwebrtc_helper @ a.out.js:103886
libwebrtc.on_channel_message @ a.out.js:1575
a.out.js:1674 Uncaught Assertion failed: conn->status == HUMBLENET_CONNECTION_CONNECTED, at: humblenet_asmjs_amalgam.cpp,3527,on_data at Error
    at jsStackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1173:13)
    at stackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1190:22)
    at ___assert_fail (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1674:210)
    at Array.__Z7on_dataP17internal_socket_tPKviPv [on_data(internal_socket_t*, void const*, int, void*)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:8654:3)
    at Array.__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i [webrtc_protocol(libwebrtc_context*, libwebrtc_connection*, libwebrtc_data_channel*, libwebrtc_callback_reasons, void*, void*, int)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:14312:41)
    at _libwebrtc_helper (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:15033:42)
    at Object.asm._libwebrtc_helper [as on_event] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:103886:31)
    at RTCDataChannel.libwebrtc.on_channel_message (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1575:6261)
___assert_fail @ a.out.js:1674
__Z7on_dataP17internal_socket_tPKviPv @ a.out.js:8654
__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i @ a.out.js:14312
_libwebrtc_helper @ a.out.js:15033
asm._libwebrtc_helper @ a.out.js:103886
libwebrtc.on_channel_message @ a.out.js:1575
a.out.js:1674 Uncaught Assertion failed: conn->status == HUMBLENET_CONNECTION_CONNECTED, at: humblenet_asmjs_amalgam.cpp,3527,on_data at Error
    at jsStackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1173:13)
    at stackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1190:22)
    at ___assert_fail (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1674:210)
    at Array.__Z7on_dataP17internal_socket_tPKviPv [on_data(internal_socket_t*, void const*, int, void*)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:8654:3)
    at Array.__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i [webrtc_protocol(libwebrtc_context*, libwebrtc_connection*, libwebrtc_data_channel*, libwebrtc_callback_reasons, void*, void*, int)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:14312:41)
    at _libwebrtc_helper (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:15033:42)
    at Object.asm._libwebrtc_helper [as on_event] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:103886:31)
    at RTCDataChannel.libwebrtc.on_channel_message (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1575:6261)
___assert_fail @ a.out.js:1674
__Z7on_dataP17internal_socket_tPKviPv @ a.out.js:8654
__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i @ a.out.js:14312
_libwebrtc_helper @ a.out.js:15033
asm._libwebrtc_helper @ a.out.js:103886
libwebrtc.on_channel_message @ a.out.js:1575
a.out.js:1674 Uncaught Assertion failed: conn->status == HUMBLENET_CONNECTION_CONNECTED, at: humblenet_asmjs_amalgam.cpp,3527,on_data at Error
    at jsStackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1173:13)
    at stackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1190:22)
    at ___assert_fail (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1674:210)
    at Array.__Z7on_dataP17internal_socket_tPKviPv [on_data(internal_socket_t*, void const*, int, void*)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:8654:3)
    at Array.__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i [webrtc_protocol(libwebrtc_context*, libwebrtc_connection*, libwebrtc_data_channel*, libwebrtc_callback_reasons, void*, void*, int)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:14312:41)
    at _libwebrtc_helper (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:15033:42)
    at Object.asm._libwebrtc_helper [as on_event] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:103886:31)
    at RTCDataChannel.libwebrtc.on_channel_message (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1575:6261)
___assert_fail @ a.out.js:1674
__Z7on_dataP17internal_socket_tPKviPv @ a.out.js:8654
__Z15webrtc_protocolP17libwebrtc_contextP20libwebrtc_connectionP22libwebrtc_data_channel26libwebrtc_callback_reasonsPvS6_i @ a.out.js:14312
_libwebrtc_helper @ a.out.js:15033
asm._libwebrtc_helper @ a.out.js:103886
libwebrtc.on_channel_message @ a.out.js:1575
a.out.js:1674 Uncaught Assertion failed: conn->status == HUMBLENET_CONNECTION_CONNECTED, at: humblenet_asmjs_amalgam.cpp,3527,on_data at Error
    at jsStackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1173:13)
    at stackTrace (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1190:22)
    at ___assert_fail (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:1674:210)
    at Array.__Z7on_dataP17internal_socket_tPKviPv [on_data(internal_socket_t*, void const*, int, void*)] (file:///C:/Program%20Files/Emscripten/emscripten/1.35.0/a.out.js:8654:3)
  

The client looks like this:

#include "humblenet.h"
#include "humblenet_p2p.h"
#include <stdio.h>
#include <emscripten.h>

#define CHANNEL 0
char buff[256];

PeerId myPeer=0;
PeerId remotePeer = 0;
void main_loop()
{
humblenet_p2p_wait(1000);

if (myPeer == 0) {
printf("Finding ID...\n");
myPeer = humblenet_p2p_get_my_peer_id();
if (myPeer > 0) {
printf("Link up \n");
}
}
else{
if (remotePeer == 0)
{
printf("Need to find server!\n");
remotePeer=humblenet_p2p_virtual_peer_for_alias("pattexreceiver");
printf("I am talking to %u\n", remotePeer);
}
else
{
//printf("Sending message...\n");
humblenet_p2p_sendto("Hello", 6, remotePeer, SEND_RELIABLE, CHANNEL);
}
}
}

int main() {
printf("hello, world!\n");
humblenet_init();
humblenet_p2p_init("ws://localhost:8000/ws", "gametoken", "gamesecret", NULL);

emscripten_set_main_loop( main_loop, 60, 1 );
return 0;
}

Finally, here is the log file from the server:
[]: NOTICE: Initial logging level 7
[]: NOTICE: Library version: 1.3 baba72b
[]: NOTICE: IPV6 not compiled in
[]: NOTICE: libev support not compiled in
[]: NOTICE: static allocation: 4520 + (24 x 30000 fds) = 724520 bytes
[]: NOTICE: canonical_hostname = TAMHAN2014
[]: NOTICE: per-conn mem: 232 + 1594 headers + protocol rx buf
[]: NOTICE: Compiled with BoringSSL support
[]: NOTICE: Using non-SSL mode
[]: NOTICE: Listening on port 8000
[]: NOTICE: New connection from "127.0.0.1:56490"
[]: NOTICE: Got hello from "127.0.0.1:56490" (peer 1, game 1, platform: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36)
[]: NOTICE: Registering alias 'pattexreceiver' to peer 1
[]: NOTICE: New connection from "127.0.0.1:56498"
[]: NOTICE: Got hello from "127.0.0.1:56498" (peer 2, game 1, platform: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36)
[]: NOTICE: Lookup of alias 'pattexreceiver' for peer 2 resolved to peer 1
[]: NOTICE: P2POffer from peer 2 (127.0.0.1:56498) to peer 1[]: NOTICE: (127.0.0.1:56490)

TURN server support

I see that in code there are placeholders for the stun server support. Is there a plan to finish it?

Automatic add FlatBuffers via CMake

Docs how to use FlatBuffers with Cmake https://google.github.io/flatbuffers/flatbuffers_guide_building.html

The FlatBuffers Repo can also be added as a git submodule let cmake pull it like:

	FetchContent_Declare(boost
		URL https://boostorg.jfrog.io/artifactory/main/release/1.71.0/source/boost_1_71_0.7z
		URL_HASH SHA256=1b3949ffddf56129141032542523920034f2e69775fb9332a52ba37c548dbf35)
	FetchContent_MakeAvailable(boost)
	FetchContent_GetProperties(boost SOURCE_DIR BOOST_SRC_DIR)

Docker image

Having a docker image with this would be great!

Implementing latest version of HumbleNet to the Unity

I have tested WebGLRoller on my computer. It works fine aside from some bugs. But I want to use latest version of HumbleNet in my Unity project(running in 2020.3.15f1). I am trying to implement it to my Unity project past couple of days but couldn't manage to do it. So if you remember how you did it back then can you share some kind of guidelines. If I can manage to do it in this version I will be happy to share test project with you.

Signaling Server Replacement

I was looking for the source code, and I was wondering with there is a simple way to replace the signaling system/server with another system.

Currently when a Peer call the initialization methods (humblenet_init and humblenet_p2p_init), internally it's created a WebSocket connection with the server, and all subsequently method calls (like to connect or send data to another peer) is based on the existance of this socket connected with the Signaling server.

There is a way to replace this is other external signaling system ?

libwebsockets/lib/output.c:112: lws_issue_raw: Assertion `0' failed.

OS: Ubuntu
Arch: x86_64

./humblenet_test_peer.bin.x86_64 fails to connect to peer with the following error message

[1501043017:0562] ERR: ****** 22550e0 Sending new, pending truncated ...
humblenet_test_peer.bin.x86_64: /home/urkle/Projects/HumbleNet/humblenet/3rdparty/libwebsockets/lib/output.c:112: lws_issue_raw: Assertion `0' failed.
Aborted (core dumped)

thank for humblenet

I saw you didn't update it for a long time,
but i hope you will update it in the future, I love this project
and using flatbuffers was an excellent choice.

Unreliable transmission

Is there any plan to support unreliable data transmission (apart from reliable and buffered reliable)?
Is there any technical difficulties implementing this feature not found on reliable or buffered reliable implementation?

Error Linux & Windows with SSL

CLIENT

rt.x86_64: /home/urkle/Projects/HumbleNet/humblenet/3rdparty/boringssl/crypto/digest/digests.c:105: md5_final: Assertion `MD5_Final(out, ctx->md_data)' failed.

Native stacktrace:

rt.x86_64: malloc.c:2401: sysmalloc: Assertion `(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)' failed.
Aborted (core dumped)

Build guide?

A guide on how to make this build successfully would be great!

Is this library abandoned?

The blog post mentioned:

We have a roadmap of what we plan on adding now that the project is released. Keep an eye on the HumbleNet site for the latest development.

Future work items include:

  1. Event API
    Allows a simple SDL2-style polling event system so that game code can easily check for various events from the peer server in a cleaner way, such as connects, disconnects, etc.
  2. Lobby API
    Uses the Event API to build a means of creating lobbies on the peer server in order to locate game sessions (instead of having to register aliases).
  3. WebSocket API
    Adds in support to easily connect to any websocket server with a clean simple API.

Would be cool to see them one day! :)

using the library with .net core

Is there Any guide for using this library in a c# .net core project?
and does this library support receiving voice frame from an rtc service?

mDNS candidate address issue

Currently there's an issue with the candidates that have mDNS address (in format aaa-eee-fff.local) since the handler assumes that only IPV4 addresses are valid, current implementation

This could be fixed with the with the following code:

             else if (pr3->NumResults == 2) {
                    struct parser_result *pr4;
                    struct parser_result *pr5;
                    pr4 = ILibParseStringAdv(pr2->FirstResult->NextResult->NextResult->NextResult->NextResult->data, 0, pr2->FirstResult->NextResult->NextResult->NextResult->NextResult->datalength, " ", 1);
                    printf("\nClient sent mDNS address %s\n", pr4->FirstResult->data);
                    char* address = pr4->FirstResult->data;
                    address[pr4->FirstResult->datalength] = '\0';
                    struct hostent *res = gethostbyname(address);
                    if (res) {
                        char *IPbuffer = inet_ntoa(*((struct in_addr *)
                                res->h_addr_list[0]));
                        pr5 = ILibParseStringAdv(IPbuffer, 0, strlen(IPbuffer), ".", 1);
                        printf("\nIP mDNS address translated to %s\n", IPbuffer);

                        candidateData = IPbuffer;
                        candidateData[strlen(IPbuffer)] = '\0';

                        candidateData[0] = (char) atoi(pr5->FirstResult->data);
                        pr5->FirstResult->NextResult->data[pr5->FirstResult->NextResult->datalength] = 0;
                        candidateData[1] = (char) atoi(pr5->FirstResult->NextResult->data);
                        pr5->FirstResult->NextResult->NextResult->data[pr5->FirstResult->NextResult->NextResult->datalength] = 0;
                        candidateData[2] = (char) atoi(pr5->FirstResult->NextResult->NextResult->data);
                        pr5->FirstResult->NextResult->NextResult->NextResult->data[pr5->FirstResult->NextResult->NextResult->NextResult->datalength] = 0;
                        candidateData[3] = (char) atoi(pr5->FirstResult->NextResult->NextResult->NextResult->data);

                        ((unsigned short *) candidateData)[2] = htons(port);
                        candidateData[6] = 0;

                        ILibPushStack(&candidates, candidateData);
                        ++candidatecount;
                        ILibDestructParserResults(pr5);
                        ILibDestructParserResults(pr4);
                    }

The code might be a bit hacky but didn't wanted to change too much in the 3rd party lib.

Building errors with strcpy_s

Following all the building instructions, the next prompt appears:

/libwebrtc_microstack.a(ILibWrapperWebRTC.c.o): In function ILibWrapper_WebRTC_Connection_SetOffer': ILibWrapperWebRTC.c:(.text+0x2cbb): undefined reference to strcpy_s'
ILibWrapperWebRTC.c:(.text+0x2cdc): undefined reference to `strcpy_s'
collect2: error: ld returned 1 exit status

I have checked the code file, including string.h but the error keeps appearing.
Any idea why?
Compiling in Ubuntu 18.04 VMWare machine.

Building errors

Hello.
I'm trying to build HumbleNet on windows . I'm using a Windows 10 x64 bit machine.
I tried to follow the instructions included on the home page but I end up with the following errors in step 4(when run the "cmake .." command inside the build directory) here is the cmake log:

-- Building for: Visual Studio 15 2017
-- The C compiler identification is MSVC 19.15.26726.0
-- The CXX compiler identification is MSVC 19.15.26726.0
-- Check for working C compiler: D:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Tools/MSVC/14.15.26726/bin/Hostx86/x86/cl.exe
-- Check for working C compiler: D:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Tools/MSVC/14.15.26726/bin/Hostx86/x86/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: D:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Tools/MSVC/14.15.26726/bin/Hostx86/x86/cl.exe
-- Check for working CXX compiler: D:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Tools/MSVC/14.15.26726/bin/Hostx86/x86/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for pthread.h
-- Looking for pthread.h - not found
-- Found Threads: TRUE
-- Looking for clock_gettime
-- Looking for clock_gettime - not found
-- Looking for dlopen
-- Looking for dlopen - not found
-- Performing Test CHECK_CXX_FLAG__Wno_deprecated_register
-- Performing Test CHECK_CXX_FLAG__Wno_deprecated_register - Failed
-- Performing Test CHECK_CXX_FLAG__Wno_int_to_void_pointer_cast
-- Performing Test CHECK_CXX_FLAG__Wno_int_to_void_pointer_cast - Failed
-- Configuring done
-- Generating done
-- Build files have been written to: D:/RTCDirectpry/HumbleNet-master/build

I can't find the file "humblepeer_generated.h" mentioned in the next step.
any help what I'm missing??
Best Regards

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.