Skip to content

EngineIO Client could not keep connection alive when using SSL #16

@matrixcloud

Description

@matrixcloud

Hi,

I tried to connect an SSL engine-io server but got failed.

Server Code

The following is my server code, I deploy the servlet in a Jetty Container which is using SSL.

public class SockServlet extends HttpServlet {
    private final EngineIoServer mEngineIoServer = new EngineIoServer();
    private static final Logger logger = Logger.getLogger(ConnectionListener.class.getName());

    @Override
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
        logger.info("Sock Servlet Initialized");

        initIO();
    }

    private void initIO() {
        mEngineIoServer.on("connection", new Emitter.Listener() {
            @Override
            public void call(Object... args) {
                EngineIoSocket socket = (EngineIoSocket) args[0];
                logger.info("A client connected: " + socket.getId());
                socket.send(new Packet<>(Packet.MESSAGE, "Hi client, I am here"));

                socket.on("message", new Emitter.Listener() {
                    @Override
                    public void call(Object... objects) {
                        String message = (String) objects[0];
                        logger.info("received: " + message);
                        logger.info("received");
                    }
                });
            }
        });
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        mEngineIoServer.handleRequest(req, resp);
    }

    public EngineIoServer getmEngineIoServer() {
         return mEngineIoServer;
    }
}

maven dependency

<dependency>
        <groupId>io.socket</groupId>
        <artifactId>engine.io-server</artifactId>
        <version>1.3.1</version>
</dependency>

Client Code

I created an engine-io client using engine.io-client.

const io = require('engine.io-client');

const opts = {
  path: '/rest-api/sock',
  rejectUnauthorized: false,
};

const socket = io('https://localhost:8443', opts);
socket.on('open', () => {
  console.log('connected');
})
socket.on('message', (data) => {
  console.log('received: ', data);
});

socket.on('error', (err) => {
  console.log('error', err);
})

console.log('client started');

dependency

 "engine.io-client": "^3.2.1",

Errors

When I executed the client code using node client.js, it showed the first connection has been established, but the connection couldn't keep alive.

client started
connected
received:  Hi client, I am here
error { Error: xhr poll error
    at XHR.Transport.onError (C:\Projects\history-notification-client\node_modules\engine.io-client\lib\transport.js:67:13)
    at Request.<anonymous> (C:\Projects\history-notification-client\node_modules\engine.io-client\lib\transports\polling-xhr.js:130:10)
    at Request.Emitter.emit (C:\Projects\history-notification-client\node_modules\component-emitter\index.js:133:20)
    at Request.onError (C:\Projects\history-notification-client\node_modules\engine.io-client\lib\transports\polling-xhr.js:311:8)
    at Timeout._onTimeout (C:\Projects\history-notification-client\node_modules\engine.io-client\lib\transports\polling-xhr.js:258:18)
    at ontimeout (timers.js:498:11)
    at tryOnTimeout (timers.js:323:5)
    at Timer.listOnTimeout (timers.js:290:5) type: 'TransportError', description: 503 }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions