netty-demo
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Nikita 5ba7b0e7f3 Description fixed 13 years ago
src JSON typed serialization support. Issue #23 13 years ago
.gitignore header ignore removed 13 years ago
LICENSE.txt License changed to Apache License 2.0 13 years ago
README.md Description fixed 13 years ago
checkstyle.xml Decoding speed up 13 years ago
header.txt License header added 13 years ago
pom.xml Jackson updated to 1.9.9 version 13 years ago

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 websocket transport (Hixie-75/76/Hybi-00, Hybi-10..Hybi-13)
  • Supports namespaces
  • Supports ack (acknowledgment of received data)

#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) {
            ...
        }
    });

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

    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 class full name.
    //
    // TIP: you can customize type name field via Configuration.jsonTypeFieldName property.

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

            ...

            // 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
                var obj = ...
                socket.json.send(obj);
       });

    </script>