如需转载请标明出处:http://blog.csdn.net/itas109
QQ技术交流群:129518033
相关问题:
NULL
WebSocket 是 tcp/ip 协议之上的一个 Socket 协议,是为了解决服务器向浏览器主动推送的场景而生。本文主要讲述一下使用 express-ws 在 NodeJs 中如何结合 express 使用 webSocket。
要想使用 express-ws,首先要安装 express 以及 express-ws:
npm i -S express express-ws
然后,将上面两个包引入到我们的主模块 app.js 中,并创建服务:
var express = require('express');
var expressWs = require('express-ws');
var app = express();
接下来一部就是最重要的一步了,执行我们引入的 expressWs 方法将 app 对象传入:
expressWs(app);
通过执行以上的方法,会在现有的 app 实例上绑定 websocket 协议的封装方法,在调用该方法时,其语法类似 express 提供的 get、post、put 等方法:
app.ws('/socketTest', function (ws, req){
ws.send('你连接成功了')
ws.on('message', function (msg) {
// 业务代码
...
})
})
回调函数中,我们可以拿到两个参数:
ws 实例提供了 send 方法,用于向浏览器 socket 发送数据。通过监听 message 事件,我们可以拿到浏览器通过 websocket 为我们发送的数据。
一般在大型应用中,我们不会将所有的代码都写在一个文件中,所以 express 为我们提供了模块化路由。在模块化路由中,express 允许我们创建一个迷你 app 实例,最后将其挂载于我们的主模块实例上即可。如果我们想单独在 module1 模块上实现 websocket,该怎么办呢?之前在 npmjs 的文档上没有查到方法,经过一番试验后发现,需要分别在主模块的 app 以及 module1 模块的子路由中分别进行绑定,才可以开开心心地在 module1 中使用 ws 方法:
// module1.js
var express = require('express');
var expressWs = require('express-ws');
var router = express.Router();
expressWs(router);
router
.ws('/user', function (ws, req){
ws.on('message', function (msg) {
// 业务代码
...
})
})
.get('/user', function(req, resp) {
})
.post('/user', function(req, resp) {
})
...
module.exports = router;
// app.js
var express = require('express');
var expressWs = require('express-ws');
var module1 = require('module1');
var app = express();
expressWs(app);
app.use('/ifc', module1);
app.listen(8080);
将 httpsServer 作为 express-ws 的第二个参数使用,使用于 http 和 https
var httpsServer = https.createServer(credentials, app);
httpsServer.listen(8443);
var expressWss = require('express-ws')(app, httpsServer);
如需转载请标明出处:http://blog.csdn.net/itas109
QQ技术交流群:129518033
License
License under CC BY-NC-ND 4.0: 署名-非商业使用-禁止演绎
Reference:
NULL