Socket.IO server implemented on Java
Switch branches/tags
Nothing to show
Pull request Compare This branch is 589 commits behind mrniko:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src
.gitignore
LICENSE.txt
README.md
checkstyle.xml
header.txt
pom.xml

README.md

#Netty-socketio Overview

This project is an open-source Java implementation of Socket.IO server. Based on Netty server framework. Required JDK 1.5 (or above).

Checkout Demo project

Licensed under the Apache License 2.0.

Features

  • Supports 0.7+ version of Socket.IO-client up to latest - 0.9.6
  • Supports xhr-polling transport
  • Supports flashsocket transport
  • Supports websocket transport (Hixie-75/76/Hybi-00, Hybi-10..Hybi-13)
  • Supports namespaces
  • Supports ack (acknowledgment of received data)
  • Supports SSL
  • Lock-free implementation

#Usage example

##Server

    Configuration config = new Configuration();
    config.setHostname("localhost");
    config.setPort(81);

    SocketIOServer server = new SocketIOServer(config);
    server.addMessageListener(new DataListener<String>() {
        @Override
        public void onData(SocketIOClient client, String message, AckRequest ackRequest) {
            ...
        }
    });

    server.addEventListener("someevent", SomeClass.class, new DataListener<SomeClass>() {
        @Override
        public void onData(SocketIOClient client, Object data, AckRequest ackRequest) {
            ...
        }
    });

    server.addConnectListener(new ConnectListener() {
        @Override
        public void onConnect(SocketIOClient client) {
            ...
        }
    });

    server.addDisconnectListener(new DisconnectListener() {
        @Override
        public void onDisconnect(SocketIOClient client) {
            ...
        }
    });


    // Don't forget to include type field on javascript side,
    // it named '@class' by default and should equals to full class name.
    //
    // TIP: you can customize type field name via Configuration.jsonTypeFieldName property.

    server.addJsonObjectListener(SomeClass.class, new DataListener<SomeClass>() {
        @Override
        public void onData(SocketIOClient client, SomeClass data, AckRequest ackRequest) {

            ...

            // send object to socket.io client
            SampleObject obj = new SampleObject();
            client.sendJsonObject(obj);
        }
    });

server.start();


...


server.stop();

##Client

    <script type="text/javascript" src="socket.io.js" charset="utf-8"></script>

    <script type="text/javascript">

           var socket = io.connect('http://localhost:81', {
             'reconnection delay' : 2000,
             'force new connection' : true
           });

           socket.on('message', function(data) {
                // here is your handler on messages from server
           });

       socket.on('connect', function() {
                // connection established, now we can send an objects


                // send json-object to server
                // '@class' property should be defined and should 
                // equals to full class name.
                var obj = { '@class' : 'com.sample.SomeClass',
                             ...
                          };
                socket.json.send(obj);



                // send event-object to server
                // '@class' property is NOT necessary in this case
                var event = { 
                             ...
                          };
                socket.emit('someevent', event);

       });

    </script>