njones / socketio

A Modern SocketIO library for go
MIT License
60 stars 9 forks source link

socket-io (client): Developing a SocketIO Client #31

Open njones opened 2 years ago

njones commented 2 years ago

Proposal: Adding a SocketIO Client

Author(s): Nika Jones (@njones)

Last updated: 2022-Aug-27

Abstract

The SocketIO library should have a client developed alongside the server. This will allow backend services developed in Go the ability to call any SocketIO server implementation.

Background

Although the general SocketIO client use case is from a browser, which can't natively run Go. However there are lots of situations where a backend service could use a client to talk to a SocketIO server.

Examples:

Proposal

Create a Client object. (The zero defaults should be valid)

client = NewClient(options...) <*Client>

or

client = &Client{} 

Rationale

The simplest Client is one that can have .On and .Emit with a Dialer that can have any transport necessary.

Implementation

  1. Create the client object
  2. Flesh out the OnConnect, OnDisconnect, On and Emit handlers
  3. Make sure that a replacement Transport or Dialer works
  4. Test the client
  5. Release