GithubHelp home page GithubHelp logo

x-fri / ws-ocaml Goto Github PK

View Code? Open in Web Editor NEW

This project forked from muqiuhan/ws-ocaml

0.0 0.0 0.0 35 KB

WebSocket server implementation of OCaml

License: MIT License

JavaScript 1.94% OCaml 95.28% HTML 2.77%

ws-ocaml's Introduction

WebSocket server implementation of OCaml.

Installation

$ git clone https://github.com/muqiuhan/ws-ocaml
$ dune
$ dune install

Installation using OPAM

$ opam pin add ws-ocaml https://github.com/muqiuhan/ws-ocaml

Example

A simple chat program. Example client-side programs are placed in test/chat/.

open Ws_ocaml

module Clients = struct
  type _t = Websocket.client list ref

  let make () = ref []

  let broadcast store message =
    List.iter (fun client -> ignore (Websocket.send_text client message)) !store
  ;;

  let add store client = store := client :: !store

  let remove store client =
    let rec remove acc = function
      | [] -> acc
      | x :: xs -> if x = client then remove acc xs else remove (x :: acc) xs
    in
    store := remove [] !store
  ;;
end

let store = Clients.make ()

let on_connection client =
  print_endline "a new client connected";
  Clients.add store client
;;

let on_message _ = function
  | Websocket.Text message -> Clients.broadcast store message
  | Websocket.Binary _ -> ()
;;

let on_close client =
  print_endline "a client disconnected";
  Clients.remove store client
;;

let () =
  Websocket.run
    ~addr:"127.0.0.1"
    ~port:"3000"
    (Websocket.make_app ~on_connection ~on_message ~on_close ())
;;

Licence

MIT

ws-ocaml's People

Contributors

krtx avatar muqiuhan avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.