• Stars
    star
    10,438
  • Rank 3,296 (Top 0.07 %)
  • Language
    Java
  • License
    MIT License
  • Created almost 15 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A barebones WebSocket client and server implementation written in 100% Java.

Java WebSockets

Build Status Javadocs Maven Central

This repository contains a barebones WebSocket server and client implementation written in 100% Java. The underlying classes are implemented java.nio, which allows for a non-blocking event-driven model (similar to the WebSocket API for web browsers).

Implemented WebSocket protocol versions are:

Here some more details about protocol versions/drafts. PerMessageDeflateExample enable the extension with reference to both a server and client example.

Getting Started

Dependency management tools

Below is a brief guide to using dependency management tools like maven or gradle.

Maven

To use maven add this dependency to your pom.xml:

<dependency>
  <groupId>org.java-websocket</groupId>
  <artifactId>Java-WebSocket</artifactId>
  <version>1.5.6</version>
</dependency>

Gradle

To use Gradle add the maven central repository to your repositories list:

mavenCentral()

Then you can just add the latest version to your build.

compile "org.java-websocket:Java-WebSocket:1.5.6"

Or this option if you use gradle 7.0 and above.

implementation 'org.java-websocket:Java-WebSocket:1.5.6'

Logging

This library uses SLF4J for logging and does not ship with any default logging implementation.

Exceptions are using the log level ERROR and debug logging will be done with log level TRACE.

Feel free to use whichever logging framework you desire and use the corresponding binding in your dependency management.

If you want to get started, take a look at the SimpleLogger example.

Standalone jar

If you do not use any dependency management tool, you can find the latest standalone jar here.

Writing your own WebSocket Server

The org.java_websocket.server.WebSocketServer abstract class implements the server-side of the WebSocket Protocol. A WebSocket server by itself doesn't do anything except establish socket connections though HTTP. After that it's up to your subclass to add purpose.

An example for a WebSocketServer can be found in both the wiki and the example folder.

Writing your own WebSocket Client

The org.java_websocket.client.WebSocketClient abstract class can connect to valid WebSocket servers. The constructor expects a valid ws:// URI to connect to. Important events onOpen, onClose, onMessage and onError get fired throughout the life of the WebSocketClient, and must be implemented in your subclass.

An example for a WebSocketClient can be found in both the wiki and the example folder.

Examples

You can find a lot of examples here.

WSS Support

This library supports wss. To see how to use wss please take a look at the examples.

If you do not have a valid certificate in place then you will have to create a self signed one. Browsers will simply refuse the connection in case of a bad certificate and will not ask the user to accept it. So the first step will be to make a browser to accept your self signed certificate. ( https://bugzilla.mozilla.org/show_bug.cgi?id=594502 ).
If the websocket server url is wss://localhost:8000 visit the url https://localhost:8000 with your browser. The browser will recognize the handshake and allow you to accept the certificate.

The vm option -Djavax.net.debug=all can help to find out if there is a problem with the certificate.

It is currently not possible to accept ws and wss connections at the same time via the same websocket server instance.

For some reason Firefox does not allow multiple connections to the same wss server if the server uses a different port than the default port (443).

If you want to use wss on the android platform you should take a look at this.

I ( @Davidiusdadi ) would be glad if you would give some feedback whether wss is working fine for you or not.

Minimum Required JDK

Java-WebSocket is known to work with:

  • Java 1.7 and higher

Other JRE implementations may work as well, but haven't been tested.

License

Everything found in this repo is licensed under an MIT license. See the LICENSE file for specifics.

More Repositories

1

NodObjC

The Node.js ⇆ Objective-C bridge
JavaScript
1,396
star
2

proxy-agents

Node.js HTTP Proxy Agents Monorepo
TypeScript
912
star
3

node-spotify-web

Node.js implementation of the Spotify Web protocol
JavaScript
695
star
4

node-speaker

Output PCM audio data to the speakers
JavaScript
634
star
5

plist.js

Mac OS X Plist parser/builder for Node.js and browsers
JavaScript
584
star
6

ansi-canvas

Render a <canvas> node to your terminal
JavaScript
578
star
7

node-lame

Node.js native bindings to libmp3lame & libmpg123
C++
561
star
8

ref

Turn Buffer instances into "pointers"
JavaScript
453
star
9

node-bindings

Helper module for loading your native module's `.node` file
JavaScript
394
star
10

node-time

"time.h" bindings for Node.js
JavaScript
377
star
11

node-applescript

A Node.js module to easily execute arbitrary AppleScript code on Mac OS X.
JavaScript
375
star
12

keypress

Make any Node ReadableStream emit "keypress" events
JavaScript
352
star
13

node-socks-proxy-agent

A SOCKS (v4/v5) proxy `http.Agent` implementation for HTTP and HTTPS
333
star
14

ansi.js

Advanced ANSI formatting tool for Node.js
JavaScript
315
star
15

node-icy

Node.js module for parsing and/or injecting ICY metadata
JavaScript
288
star
16

node-proxy-agent

Maps proxy protocols to `http.Agent` implementations
284
star
17

node-iOS

Native node bindings to iOS functionality (vibrate, acceleromoter, geoservices, etc.)
C++
265
star
18

proxy

An HTTP proxy written with Node.js (think Squid)
254
star
19

gnode

Run node with ES6 Generators, today!
JavaScript
247
star
20

node-throttle

Node.js Transform stream that passes data through at `n` bytes per second
JavaScript
179
star
21

node-wav

`Reader` and `Writer` streams for Microsoft WAVE audio files
JavaScript
174
star
22

superagent-proxy

`Request#proxy(uri)` superagent extension
JavaScript
154
star
23

nx.js

JavaScript runtime for Nintendo Switch homebrew applications
C++
147
star
24

node-nat-pmp

Node.js implementation of the NAT Port Mapping Protocol
JavaScript
129
star
25

node-http-proxy-agent

An HTTP(s) proxy `http.Agent` implementation for HTTP endpoints
128
star
26

ref-struct

Create ABI-compliant "struct" instances on top of Buffers
JavaScript
118
star
27

node-cgi

An http/stack/connect layer to invoke and serve CGI executables.
Perl
100
star
28

nTunes

A REST (HTTP) API for interacting with iTunes written in NodeJS.
JavaScript
95
star
29

node-telnet

Telnet implementation for Node.js
JavaScript
87
star
30

node-modbus-stack

A `StreamStack` implementation of the MODBUS protocol, for NodeJS.
JavaScript
87
star
31

node-data-uri-to-buffer

Generate a Buffer instance from a Data URI string
86
star
32

node-upnp-client

UPnP Library for NodeJS.
JavaScript
69
star
33

spotify-uri

Parse and format the various Spotify URI formats
JavaScript
66
star
34

node-ogg

Node.js native binding to libogg
JavaScript
65
star
35

node-pac-proxy-agent

A PAC file proxy `http.Agent` implementation for HTTP and HTTPS
58
star
36

node-agent-base

Turn a function into an `http.Agent` instance
58
star
37

NodeFloyd

An Icecast-compatible server written in NodeJS that streams non-stop "Pink Floyd"!
JavaScript
54
star
38

ref-array

Create C "array" instances on top of Buffers
JavaScript
53
star
39

node-pac-resolver

Generates an asynchronous resolver function from a PAC file
53
star
40

node-get-uri

Returns a `stream.Readable` from a URI string
49
star
41

stat-mode

Offers convenient getters and setters for the fs.stat()'s `mode`
TypeScript
48
star
42

node-gitweb

Directly invoke and serve GitWeb through NodeJS.
JavaScript
40
star
43

util-deprecate

The Node.js `util.deprecate()` function with browser support
JavaScript
37
star
44

ttys

Guaranteed read and write streams to the terminal
JavaScript
36
star
45

blessed-css

CSS engine for `blessed`
TypeScript
35
star
46

node-flv

FLV media container file format encoder and decoder
JavaScript
34
star
47

click-outside

The inverse of the DOM "click" event
HTML
34
star
48

switch-tools

Web app to create "NSP forwarders" for your modded Nintendo Switch
TypeScript
34
star
49

n8.io-old

my blog (deployed to DigitalOcean)
JavaScript
32
star
50

node-drone-joystick

Control AR.Drones using any SDL-compatible Joystick (PS3 Sixaxis, etc.)
JavaScript
31
star
51

SandboxJS

JavaScript "Sandboxes" for the web browser.
JavaScript
31
star
52

node-stream-parser

Generic interruptible "parser" mixin for Transform & Writable streams
JavaScript
29
star
53

node-vorbis

Node.js native binding to libvorbis
JavaScript
28
star
54

node-iTunes

A native node interface to interact with an iTunes process.
C++
28
star
55

node-elf-logger

A Node.js library for configurable HTTP logging following the W3C Extended Log File Format
JavaScript
28
star
56

file-uri-to-path

Convert a `file:` URI to a file path
JavaScript
27
star
57

node-function-name

Set the "name" property of `Function` objects
JavaScript
27
star
58

node-stream-stack

Filter low-level `Stream` instances into stackable, protocol-based streams.
JavaScript
27
star
59

node-buffer-dataview

Minimal DataView implementation that works with Node.js Buffers
JavaScript
26
star
60

node-dlopen

Native bindings to libuv's uv_dlopen() and friends
JavaScript
26
star
61

Simple-Game-Framework

An object-oriented JavaScript API to develop simple, shape and sprite based games.
JavaScript
25
star
62

iheart

iHeart Radio JavaScript API
JavaScript
24
star
63

rocker

Remote Docker: docker -H ssh://[email protected] run -p 80:80 nginx
Shell
23
star
64

once

Creates a Promise that waits for a single event
TypeScript
23
star
65

node-amf

"Action Message Format" read() and write() functions for Buffers
JavaScript
22
star
66

SoundJS

A cross-browser JavaScript sound loading, playing and layering library primarily designed for browser-based games to have a multi-layering sound API.
Haxe
22
star
67

pcre-to-regexp

Converts PCRE regexp strings to JavaScript RegExp instances
JavaScript
21
star
68

node-ctypes

Node.js implementation of "ctypes" to interface with C libs
JavaScript
20
star
69

node-degenerator

Turns sync functions into async functions
19
star
70

node-function-class

Easy `Function` subclasses
JavaScript
19
star
71

nightscout-ps1

Renders your latest blood glucose reading from Nightscout in the command line
JavaScript
19
star
72

nightscout-ps1-c

Tiny C program that formats your latest Nightscout BGL reading for use in your terminal prompt (a.k.a $PS1)
C
18
star
73

ar-drone-socket.io-proxy

Proxy AR.Drone UDP messages over a Socket.io HTTP connection
JavaScript
17
star
74

dotfiles

My dotfiles and such...
Vim Script
17
star
75

path-array

Treat your $PATH like a JavaScript Array
JavaScript
17
star
76

react-tela

Use React to render images, shapes and text to `<canvas>`
TypeScript
17
star
77

node-drone-video

Dump AR.Drone h264 video streams with matching metadata video. Splicing/editing is left up to you.
JavaScript
16
star
78

RetroPie-Profiles

RetroPie plugin to create profiles for save files and save states
Shell
15
star
79

ref-union

Create ABI-compliant "union" instances on top of Buffers
JavaScript
15
star
80

babel-plugin-transform-dirname-filename

Babel plugin that rewrites `__dirname` and `__filename` to static values
JavaScript
15
star
81

mpg123.js

Decode MP3s in the browser using libmpg123 compiled with emscripten
JavaScript
15
star
82

s3fs

Implementation of NodeJS FS interface using Amazon Simple Storage Service (S3).
JavaScript
14
star
83

array-index

Invoke getter/setter functions on array-like objects
JavaScript
14
star
84

node-gitProvider

An http/connect/stack layer to serve the contents of a 'git' repository over HTTP.
JavaScript
14
star
85

n8-make

Opinionated Makefile to build ES6 JS, JSX and Pug files
Makefile
13
star
86

ref-wchar

A ref "type" implementation of `wchar_t *` (a.k.a. wide string) backed by "node-iconv"
JavaScript
13
star
87

nTunesAnywhere

A mobile WebApp to stream your iTunes library from anywhere (using nTunes and jo)!
JavaScript
12
star
88

node-dlfcn

Native bindings to the dynamic shared library linker (dlfcn)
JavaScript
11
star
89

dexcom-share

Async Iterator API for reading blood glucose readings from Dexcom's Share servers
TypeScript
11
star
90

ModuleJS

Asynchronous CommonJS-like Module Loader for web-browsers.
JavaScript
10
star
91

node-objc

This module is deprecated in favor of NodObjC. Use that instead.
C++
9
star
92

vercel-dev-builder

Meta-runtime for Vecel that makes developing Runtimes easier
TypeScript
9
star
93

create

The missing Native.create() functions that ECMA forgot.
JavaScript
9
star
94

nexec

Execute a remote command over HTTP
JavaScript
9
star
95

ansi-hash

Get an ANSI color code for a given string
JavaScript
8
star
96

node-http-stack

A `StreamStack` implementation of the HTTP protocol, for NodeJS.
JavaScript
8
star
97

node-mail-stack

A `StreamStack` subclass that parses raw e-mail messages.
JavaScript
8
star
98

browserify-single-file

Runs browserify transforms/plugins on a single file. Useful for make pipeline tasks.
JavaScript
8
star
99

node-autoreleasepool

A very simple wrapper around the OS X NSAutoreleasePool, for NodeJS
C++
7
star
100

require-string

Turns an arbitrary String into a CommonJS compatible module
JavaScript
7
star