socket.io.lite

lightweight socket.io for websoket by ws, 支持微信小程序

Usage no npm install needed!

<script type="module">
  import socketIoLite from 'https://cdn.skypack.dev/socket.io.lite';
</script>

README

socket.io.lite

NPM Downloads CNPM Downloads NPM Version License Dependency Status devDependency Status Code Style

a lightweight socket.io library for websocket

支持微信小程序
contain heartbeat auto reconnect

Tip

2.0 upgraded the api, using new SocketLite () to create connections, no longer using io() to create connections.

Installation

$ yarn add socket.io.lite

# or npm
$ npm install socket.io.lite

Usage

server

const http = require('http')
const express = require('express')
const socketLite = require('../lib/server') // require('socket.io.lite')
const app = express()
...
const server = http.createServer(app)
const io = socketLite(server)
// events: open, close, error, ...
io.$on("open", client => {
  console.log('open')
  client.$on('testA', data => {
    console.log(data)
  })
  client.$emit('testB', { foo: 'bar' })
})
server.listen(3002)

browser

// <script src="node_modules/socket.io.lite/dist/browser.js"></script> // window.SocketLite
// or
// const SocketLite = require('socket.io.lite/lib/browser.js')
// const SocketLite = require('socket.io.lite/dist/browser.js')
var socket = new SocketLite('ws://127.0.0.1:3002')
socket.$on('open', function () {
  console.log('open')
})
socket.$emit('testA', { bar: 'foo' })
socket.$on('testB', function (data) {
  console.log()
})

weapp (微信小程序)

const SocketLite = require('socket.io.lite/lib/weapp.js')
var socket = new SocketLite('ws://127.0.0.1:3002')
socket.$on('open', function () {
  console.log('open')
})
socket.$emit('testA', { bar: 'foo' })
socket.$on('testB', function (data) {
  console.log()
})

API

client

socket.$on(eventName, callback)
socket.$emit(eventName, data)  

server

io.$on(eventName, data)
io.$emit(eventName, callback) // braodcast
socket.$on(eventName, data)
socket.$emit(eventName, callback)

about the $on !!!
Because JSON.stringify and JSON.parse are used in the current code, data is required to be an object and not to pass in a JSON format string.

Todos

  • 支持直接传递基本数据类型
  • 支持传递二进制数据

License

MIT © 小花猫