行为 | 命令 |
---|---|
给自己发消息 | socket.emit('message', '这是一条给自己的消息'); |
给所有人发消息 | io.emit('message', '这是一条消息'); |
给除自己之外的人发消息 | socket.broadcast.emit('message', '这是一条消息,但不发送给自己'); |
给房间里的人发消息 | io.to('roomName').emit('message', '这是一条仅房间内用户可见的消息'); |
给房间里除了自己之外的人发消息 | socket.broadcast.to('roomName').emit('message', '这是一条仅房间内其他用户可见的消息'); |
加入房间 | socket.join('roomName') |
离开房间 | socket.leave('roomName') |
webrtc
https://juejin.cn/post/7266417942182608955
https://github.com/wang1xiang/webrtc-tutorial/tree/master/04-one-to-one
log4js
https://blog.csdn.net/weixin_57208584/article/details/134188447
https://juejin.cn/post/7221445996135022653
日志使用:
先安装
pnpm add log4js
再创建和配置
import log4js from "log4js";
const config = {
appenders: {
console: {
type: "console",
layout: {
type: "pattern",
pattern: "%d{yyyy-MM-dd hh:mm:ss} - %m", // 这里定义了时间格式
},
},
file: {
type: "dateFile",
filename: "logs/log",
encoding: 'utf-8',
compress: true,
numBackups: 7,
keepFileExt: true,
alwaysIncludePattern: true,
pattern: "yyyy-MM-dd.log",
fileNameSep: '-',
layout: {
type: "pattern",
pattern: "%d{yyyy-MM-dd hh:mm:ss} - [%p] - %m", // 这里定义了时间格式
},
},
},
categories: {
default: { appenders: ["console", "file"], level: "info" },
},
};
let logger;
if (!logger) {
log4js.configure(config);
logger = log4js.getLogger();
}
export default logger;
yarn run build 的时候出现 nodejs digital envelope routines::unsupported 错误。用下边处理方法:
方法一:
export NODE_OPTIONS=--openssl-legacy-provider
# 然后 再 run 就 ok 了
方法二:修改package.json,在相关构建命令之前加入set NODE_OPTIONS=--openssl-legacy-provider
"build": "set NODE_OPTIONS=--openssl-legacy-provider & webpack --config ./webpack/webpack.build.js",
使用 ORM 可以减少数据库的操作细节,简化代码逻辑。同时,也会减少学习数据库操作更底层的东西,这个是坏事。可好事是方便,好用。
这里使用 Sequelize
https://sequelize.org/master/manual/model-basics.html
使用过任意一种语言的 ORM 的用户,这个上手起来还是蛮快的。
从零开始构建 node 项目
拥有 node,开始从零构建 node 项目吧
mkdir nodeservice
cd nodeservice
npm init
# 输入项目介绍,关键词,auth这些,一路回车,yes,成功创建 package.json 文件。
# 此时仅有该文件
然后按照需要,安装必须用到的包。少了,后边可以继续安装。
npm install express
npm install lodash
npm install moment
npm install mysql
npm install redis
npm install ioredis
npm install request
npm install socket.io
npm install socket.io-redis
npm install socketio-jwt
npm install async
npm install url
npm install jsonwebtoken
npm install bluebird
npm install china-time
npm install winston
npm install mqtt
然后创建 server.js
touch server.js
参考
https://blog.csdn.net/u013165804/article/details/80568626
了解 model.exports export 等等
了解各种工具包
lodash 。Lodash 通过降低 array、number、objects、string 等等的使用难度从而让 JavaScript 变得更简单。
moment 。 时间格式处理工具。
jsonwebtoken 。用于生产及交验 token
https://github.com/auth0/node-jsonwebtoken
https://blog.csdn.net/qq_37398213/article/details/81606824
https://cloud.tencent.com/developer/article/1431793
url 。 url 模块提供了一些实用函数,用于URL处理与解析。
https://www.cnblogs.com/fengch/p/8610196.html
yeast 。根据时间戳生成唯一字符串 (做聊天的时候,生成房间 id 可以使用)
https://github.com/unshiftio/yeast
[https://blog.csdn.net/themagickeyjianan/article/details/78588257](https://blog.csdn.net/themagickeyjianan/article/details/78588257)
https://www.javascriptcn.com/read-53551.html
ioredis 。 ioredis 是一个用于 Node.js/io.js 的 Redis 客户端,强健、功能强大且全面。
https://www.oschina.net/p/ioredis
https://blog.csdn.net/qq_33589252/article/details/85535890
ws 。 ws websocket 库, node.js 的 websocket 的实现。
https://www.npmjs.com/package/ws
https://blog.csdn.net/LiMubai_CN/article/details/81844156
os 。 os 模块提供了与操作系统相关的实用方法和属性。
http://nodejs.cn/api/os.html#os_os
http://nodejs.cn/api/os/os_networkinterfaces.html
mysql 。 mysql 连接池
https://www.jianshu.com/p/2239a4df6ed5
bluebird 。bluebird 实现更强大的 Promise
https://www.ibm.com/developerworks/cn/web/wa-lo-use-bluebird-implements-power-promise/index.html
node.js的mysql模块比较多,有mysql,mysqli,还有mariasql以及node-mariadb。针对服务器的环境,使用对应的模块。因此,踩过不少坑。
环境差异
服务器装的mysql环境,php7或php7以下
安装对应模块:
npm install mysql // php7以下
npm install mysqli // php7