MCPcopy Index your code
hub / github.com/InstantWebP2P/node-android

github.com/InstantWebP2P/node-android @1.0.13

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.0.13 ↗ · + Follow
3,009 symbols 8,688 edges 211 files 209 documented · 7%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

node-android

Run Node.js on Android by rewrite Node.js in Java with the compatible API.

third-party: libuvpp, libuv-java JNI code by Oracle.

Build

Clone the code, open Android Studio (1.*) and import the project.

For Eclipse ADT user, refer to https://github.com/InstantWebP2P/node-android/tree/adt

Javascript code injection

> adb shell am start -a android.intent.action.VIEW -n com.iwebpp.nodeandroid/.MainActivity -e js "var run = function () { return 'hello world'; } run();"

Features

  • Node.js 0.10.x compatible API
  • Multi-threading: run separate node context in Java thread
  • libUV native support
  • Timer, set/clear Timeout/Interval
  • EventEmitter
  • Stream
  • HttpParser(rewrite http-parser.c in java)
  • HTTP
  • HTTPP(run http over udp)
  • TCP
  • UDT(udp transport)
  • DNS
  • URL
  • IPv6
  • for API usage, check https://github.com/InstantWebP2P/node-android/tree/master/src/com/iwebpp/node/tests
  • WebSocket/WebSocketServer supported, check https://github.com/InstantWebP2P/node-android/tree/master/src/com/iwebpp/wspp/tests
  • Connect middleware
  • Crypto: NACL support, public box,secret box,signature/verify
  • SecureWebSocket over NACL

JS runtime

  • Rhino supported
  • Exposed node-android packages: com.iwebpp.node.http, com.iwebpp.node.stream, com.iwebpp.node.net, etc
  • Exposed node-android classes: com.iwebpp.node.EventEmitter2, com.iwebpp.node.Dns, com.iwebpp.node.Url, etc
  • Exposed node-android native context in JS standard scope as NodeCurrentContext alias NCC
  • Exposed Android API: android.util.Log
  • NodeJS compatible internal modules are available in JS standard scope
  • Exposed WebSocket classes: com.iwebpp.wspp.WebSocket, com.iwebpp.wspp.WebSocketServer

JS usage

  • In case Rhino, create class 'MyScript' extends from com.iwebpp.node.js.rhino.Host
  • Implement 'public String content()' in 'MyScript' to return user script
  • Execute JS engine in a separate Java Thread with 'MyScript.execute()'
  • When authoring script, please use NodeCurrentContext(alias NCC) in node-android API
  • For details, check https://github.com/InstantWebP2P/node-android/tree/master/src/com/iwebpp/node/js/tests

TODO

  • API doc, more demos
  • JS runtime CommonJS/AMD compliance

License

(see LICENSE file)

Copyright (c) 2014 Tom Zhou(iwebpp@gmail.com)

Extension points exported contracts — how you extend this code

FileReadCallback (Interface)
(no doc) [7 implementers]
app/src/main/java/com/iwebpp/libuvpp/cb/FileReadCallback.java
StreamConnectCallback (Interface)
(no doc) [9 implementers]
app/src/main/java/com/iwebpp/libuvpp/cb/StreamConnectCallback.java
StreamCloseCallback (Interface)
(no doc) [11 implementers]
app/src/main/java/com/iwebpp/libuvpp/cb/StreamCloseCallback.java
StreamConnectionCallback (Interface)
(no doc) [12 implementers]
app/src/main/java/com/iwebpp/libuvpp/cb/StreamConnectionCallback.java
ProcessCloseCallback (Interface)
(no doc) [11 implementers]
app/src/main/java/com/iwebpp/libuvpp/cb/ProcessCloseCallback.java

Core symbols most depended-on inside this repo

d
called by 403
app/src/main/java/com/iwebpp/SimpleDebug.java
debug
called by 313
app/src/main/java/com/iwebpp/SimpleDebug.java
put
called by 269
app/src/main/java/com/iwebpp/node/api/AsyncHttpClient.java
emit
called by 191
app/src/main/java/com/iwebpp/node/EventEmitter.java
get
called by 172
app/src/main/java/com/iwebpp/node/http/http.java
SET_ERRNO
called by 152
app/src/main/java/com/iwebpp/node/HttpParser.java
get
called by 124
app/src/main/java/com/iwebpp/wspp/BufferPool.java
HTTP_PARSER_ERRNO
called by 122
app/src/main/java/com/iwebpp/node/HttpParser.java

Shape

Method 2,286
Class 363
Function 240
Interface 96
Enum 24

Languages

Java84%
C++16%
C1%

Modules by API surface

app/src/main/java/com/iwebpp/crypto/TweetNacl.java110 symbols
app/src/main/java/com/iwebpp/crypto/TweetNaclFast.java106 symbols
app/src/main/java/com/iwebpp/libuvpp/Files.java98 symbols
app/src/main/java/com/iwebpp/wspp/WebSocket.java95 symbols
app/src/main/java/com/iwebpp/node/net/AbstractSocket.java76 symbols
app/src/main/java/com/iwebpp/node/HttpParser.java71 symbols
app/src/main/java/com/iwebpp/wspp/SecureWebSocket.java67 symbols
app/src/main/java/com/iwebpp/node/stream/Writable2.java58 symbols
app/src/main/java/com/iwebpp/node/stream/Readable2.java56 symbols
app/src/main/jni/file.cpp53 symbols
app/src/main/java/com/iwebpp/node/http/ClientRequest.java52 symbols
app/src/main/java/com/iwebpp/node/http/IncomingMessage.java49 symbols

For agents

$ claude mcp add node-android \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact