博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeanEngine 中使用 WebSocket
阅读量:6711 次
发布时间:2019-06-25

本文共 1954 字,大约阅读时间需要 6 分钟。

一直以来 HTTP 协议都是使用「请求/响应」的模型,在 Web 应用越来越复杂的今天,这种模型的限制越来越明显。

很多场景下,我们想要服务器主动发送通知给浏览器,甚至我们想在浏览器中实现一个实时对战的网络游戏。这个时候 HTML5 规范中的 WebSocket 可以很好地满足我们的需求。

对于使用 LeanEngine 的用户,我们也可以直接在 LeanEngine 环境中使用 WebSocket,来构建应用了。下面我们以 LeanEngine NodeJS 运行时环境为例,实现一个 WebSocket echo server(echo server 是指返回任何接收到信息的服务)。

创建应用

我们可以使用 avoscloud new 命令来创建一个新的 LeanEngine 应用,但是简单起见,我们的还是直接手动创建我们的项目。

首先将下面的内容放到项目根目录的 package.json 文件中:

{  "dependencies": {    "ejs": "^2.3.2",    "express": "^4.13.0",    "express-ws": "^0.2.6",    "leanengine": "^0.1.4"  }}

然后执行npm install来安装依赖。

是 Node.js 一个比较常用的 WebSocket 实现模块。而 express-ws 是对其简单的封装,方便在 express 中使用。

之后创建 server.js 文件,作为应用的入口文件。在这个文件中,我们初始化 express 与 LeanCloud SDK:

var express = require("express");var AV = require('leanengine');// init LeanEnginevar PORT = parseInt(process.env.LC_APP_PORT || 3000);var APP_ID = process.env.LC_APP_ID;var APP_KEY = process.env.LC_APP_KEY;var MASTER_KEY = process.env.LC_APP_MASTER_KEY;AV.initialize(APP_ID, APP_KEY, MASTER_KEY);// init expressvar app = express();app.set('view engine', 'ejs');app.use(AV.Cloud);// start serverapp.listen(PORT);

这样一个最基本的 LeanEngine 应用就已经实现了,在此之上我们可以增加自己的路由处理与 LeanEngine 的 CloudFunc 等功能,但这不是这篇文章的重点,在此略过。

express-ws 是作为 express 的中间件实现的,之后我们需要安装此中间件:

var expressWs = require('express-ws');expressWs(app);

之后就可以使用 app.ws 方法来注册 WebSocket 路由请求了:

app.ws('/echo', function(ws, req) {  ws.on('message', function(msg) {    ws.send(msg);  });});

这里只是简单的将收到的请求发送回客户端,你也可以实现其他自定义的操作。

使用 LeanCloud 提供的命令行工具,我们可以将应用部署到服务器上:avoscloud deploy && avoscloud publish

是一个基于 Node.js 实现的命令行工具,可以用来测试我们的 echo server。使用 npm install wscat -g 来安装此工具,之后 wscat -c ws://websocket.avosapps.com (将 websocket 替换成自己在 LeanCloud 注册的二级域名)连接自己的服务:

$ wscat -c ws://websocket.avosapps.com/echoconnected (press CTRL+C to quit)> Hello WebSocket!< Hello WebSocket!>

如果没有问题的话,基于 LeanEngine 的 WebSocket 服务就搭建成功了。

以上代码参见 ,效果参考。

备注:LeanCloud 还提供服务,相比自己使用 WebSocket,它能帮你更加轻松地实现实时聊天等功能,并且你也不用担心部署、断线重连与自动扩容等问题。

转载地址:http://fkolo.baihongyu.com/

你可能感兴趣的文章
selenium面试题总结
查看>>
本次孩子流感总结
查看>>
Baby Ming and Matrix games(dfs计算表达式)
查看>>
eclipse代码提示框背景色改动
查看>>
April Fools Day Contest 2016 G. You're a Professional
查看>>
SDL绑定播放窗口 及 视频窗口缩放
查看>>
日志平台中心建议
查看>>
oracle测试环境表空间清理
查看>>
async、await正确姿势
查看>>
solr6.6 导入 文本(txt/json/xml/csv)文件
查看>>
JS的强大
查看>>
mvc 使用预置队列类型存储异常对象
查看>>
seqtk 的安装和使用
查看>>
oracle-rman-2
查看>>
OC第三天(内存管理)
查看>>
DataFactory
查看>>
php 调试工具及学习PHP垃圾回收机制了解引用计数器的概念
查看>>
Jetty安装配置
查看>>
【Lucene3.6.2入门系列】第10节_Tika
查看>>
Java工厂模式
查看>>