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 46bc2f6809 Jackson updated to 1.9.9 version 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 JSON typed serialization support. Issue #23 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, it named '@class' by default,
    // with 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>