Koa & WebSocket inAction

node.js

https://koajs.com/

ping / pong

socket.io

  1. client send 2 as ping
  2. server response 3 as pong

socket.io

https://socket.io/

https://github.com/socketio/socket.io

# WebSocket sever
$ yarn add socket.io $ npm i socket.io

https://socket.io/get-started/chat/

// createServer()
const server = require('http').createServer();
const io = require('socket.io')(server); io.on('connection', client => {
client.on('event', data => { /* … */ });
client.on('disconnect', () => { /* … */ });
}); server.listen(3000);

Express.js


const app = require('express')();
// createServer(app)
const server = require('http').createServer(app);
const io = require('socket.io')(server); io.on('connection', client => {
client.on('event', data => { /* … */ });
client.on('disconnect', () => { /* … */ });
}); server.listen(3000);

Koa.js

const app = require('koa')();
// createServer(app.callback())
const server = require('http').createServer(app.callback());
const io = require('socket.io')(server); io.on('connection', client => {
client.on('event', data => { /* … */ });
client.on('disconnect', () => { /* … */ });
}); server.listen(3000);

ws

https://github.com/websockets/ws

# WebSocket sever
$ yarn add ws $ npm i ws
$ npm i -S ws

https://github.com/websockets/ws/blob/master/doc/ws.md


WebSocket Client

https://github.com/socketio/socket.io-client

https://github.com/socketio/socket.io-client/blob/master/docs/API.md#new-managerurl-options

# WebSocket client
$ yarn add socket.io-client $ npm i socket.io-client

https://www.npmjs.com/package/socket.io-client


// ES6 import, ESM
import io from 'socket.io-client'; const socket = io();
// package.json
// ES5 require, CJS
var socket = require('socket.io-client')('http://localhost:3000'); socket.on('connect', function(){});
socket.on('event', function(data){});
socket.on('disconnect', function(){});

https://github.com/socketio/socket.io-client-swift

https://github.com/socketio/socket.io-client-java

https://github.com/rikulo/socket.io-client-dart

js vanilla WebSocket API

MDN


// Create WebSocket connection.
const socket = new WebSocket('ws://localhost:8080'); // Connection opened
socket.addEventListener('open', function (event) {
socket.send('Hello Server!');
}); // Listen for messages
socket.addEventListener('message', function (event) {
console.log('Message from server ', event.data);
});

https://developer.mozilla.org/en-US/docs/Web/API/WebSocket

https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/WebSocket

https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API

https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_client_applications

socket.io bug

https://socket.io/get-started/chat/

https://github.com/socketio/socket.io-website/blob/master/source/get-started/chat.md

    // chat message bug
// socket.on('chat message', (msg) => {
socket.on('message', (msg) => {
log(`chat message`, msg)
const li = document.createElement(`li`);
li.innerText = msg;
ul.append(li);
});

refs

https://www.npmjs.com/package/socket.io

https://www.npmjs.com/package/ws



xgqfrms 2012-2020

www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!


最新文章

  1. 创建实体数据模型【Create Entity Data Model】(EF基础系列5)
  2. linux权限管理
  3. C# 判断是否联网
  4. 下载和使用 Open XML PowerTools
  5. CSS制作hover下划线动画
  6. UART接口
  7. cocos2d-x物业现场
  8. 201521123075 《Java程序设计》第6周学习总结
  9. Django(三) ORM操作
  10. SQL内模糊查询语句拼接时单引号'问题
  11. 【转载】ASP.NET以Post方式抓取远程网页内容类似爬虫功能
  12. Python 编程快速上手 第十八章 用 GUI 自动化控制键盘和鼠标
  13. JS--我发现,原来你是这样的JS(三)(基础概念--灵魂篇)
  14. memcached 和redis比较
  15. MikroTik RouterOS电子克隆盘原理收集
  16. VB6 创建控制台应用程序
  17. Shadow Mapping 的原理与实践 【转】
  18. WEB架构师成长之路 一
  19. 超棒的在线Bootstrap主题编辑工具 - lollytin
  20. Centos 7 关闭邮件服务及禁用IPv6

热门文章

  1. 并发编程之fork/join(分而治之)
  2. 【Android初级】如何动态添加菜单项(附源码+避坑)
  3. 小步前进之WebService
  4. 【ElasticSearch】 使用AWS云ES服务来分析程序日志
  5. 静默安装Oracle也没那么恐怖
  6. zabbix错收告警
  7. docker(11)Dockerfile 中的COPY与ADD 命令
  8. 2013 Asia Hangzhou Regional Contest hdu4780 Candy Factory
  9. 2019牛客暑期多校训练营(第一场)H XOR(线性基)
  10. Codeforces Round #628 (Div. 2) C. Ehab and Path-etic MEXs(树,思维题)