tree: c71e1b01128cca3890f7ab3e529941a65fe48072 [path history] [tgz]
  1. src/
  2. pom.xml
  3. README.md
examples/karaf-websocket-example/README.md

Apache Karaf Websocket example

Abstract

This example show how to register a websocket in the Karaf HTTP Service.

Artifacts

  • karaf-websocket-example is the main bundle using @WebSocket annotation.

Build

The build uses Apache Maven. Simply use:

mvn clean install

Deployment

On a running Karaf instance, first, you have to install the pax-web-jetty-websockets, pax-web-karaf, http, and scr features:

karaf@root()> feature:install pax-web-jetty-websockets
karaf@root()> feature:install pax-web-karaf
karaf@root()> feature:install http
karaf@root()> feature:install scr

Then, you can install the websocket example bundle:

karaf@root()> bundle:install -s mvn:org.apache.karaf.examples/karaf-websocket-example/LATEST

You can see the websocket registered in the HTTP service:

karaf@root()> web:servlet-list 
Bundle ID │ Name                                                        │ Class                                                       │ Context Path(s) │ URLs                 │ Type        │ Context Filter
──────────┼─────────────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────────┼─────────────────┼──────────────────────┼─────────────┼───────────────
88        │ org.apache.karaf.examples.websocket.WebsocketExampleServlet │ org.apache.karaf.examples.websocket.WebsocketExampleServlet │ /               │ /example-websocket/* │ HttpService │ -

Usage

The websocket is available on http://localhost:8181/example-websocket.

You can now register your client (like curl) on this URL:

curl --include \
     --no-buffer \
     --header "Connection: Upgrade" \
     --header "Upgrade: websocket" \
     --header "Host: localhost:8181" \
     --header "Origin: http://localhost:8181/example-websocket" \
     --header "Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==" \
     --header "Sec-WebSocket-Version: 13" \
     http://localhost:8181/example-websocket

Your client will have a Hello World message on your client every second.