Koa & WebSocket inAction
Koa & WebSocket inAction
node.js
ping / pong
socket.io
- client send
2
asping
- server response
3
aspong
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
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 发布文章使用:只允许注册用户才可以访问!
最新文章
- 创建实体数据模型【Create Entity Data Model】(EF基础系列5)
- linux权限管理
- C# 判断是否联网
- 下载和使用 Open XML PowerTools
- CSS制作hover下划线动画
- UART接口
- cocos2d-x物业现场
- 201521123075 《Java程序设计》第6周学习总结
- Django(三) ORM操作
- SQL内模糊查询语句拼接时单引号'问题
- 【转载】ASP.NET以Post方式抓取远程网页内容类似爬虫功能
- Python 编程快速上手 第十八章 用 GUI 自动化控制键盘和鼠标
- JS--我发现,原来你是这样的JS(三)(基础概念--灵魂篇)
- memcached 和redis比较
- MikroTik RouterOS电子克隆盘原理收集
- VB6 创建控制台应用程序
- Shadow Mapping 的原理与实践 【转】
- WEB架构师成长之路 一
- 超棒的在线Bootstrap主题编辑工具 - lollytin
- Centos 7 关闭邮件服务及禁用IPv6
热门文章
- 并发编程之fork/join(分而治之)
- 【Android初级】如何动态添加菜单项(附源码+避坑)
- 小步前进之WebService
- 【ElasticSearch】 使用AWS云ES服务来分析程序日志
- 静默安装Oracle也没那么恐怖
- zabbix错收告警
- docker(11)Dockerfile 中的COPY与ADD 命令
- 2013 Asia Hangzhou Regional Contest hdu4780 Candy Factory
- 2019牛客暑期多校训练营(第一场)H XOR(线性基)
- Codeforces Round #628 (Div. 2) C.	Ehab and Path-etic MEXs(树,思维题)