用node搭建一个简单的websocket服务器
来源:互联网 发布:json转化为字符串 编辑:程序博客网 时间:2024/05/22 07:04
文章背景
开发组里老大知道我会一些android,于是让我负责把消息推送功能集成在客户端上,我想:这不简单。于是乎找很快集成第三方提供的推送服务做了个demo,但是老大的老大不乐意了,说推送服务器要自己搞,还必须用node.js做,大三到实习现在我一直用Java写代码。但是nodejs只是听说,从来就用过,但是已经接锅了,学吧!
正文
接锅之后穿梭于百度谷歌官网搜集资源,一天下来忙了这些事情
1.安装node.js(+npm),更改位于C盘的默认路径(global_node_modules/npm-cache等),后来npm全局安装无法引用(NODE_PATH配错了)的原因,这一步卡了好一段时间,不过这也值了,差不多摸清了node的开发环境结构
2.工欲善其事必先利其器,起初打算用jetbrain旗下的webstorm,毕竟以前用android studio的时候觉得很有极客感,发现要钱,还比较厚重,于是选择了sublime text2(现在也有beta的3版本),后来写js的时候发现一点都不好用,dos命令窗和编辑器之间来回切,心累,难道我用的是假的st?网上一查,发现少装了插件,package control一装,好似发现新世界,nodejs,npm插件一鼓捣,差不多告别命令行了,然后兴奋的安装了emmet和其他一些自动补全高亮插件,甚至装个主题插件美化一下,为此陶醉了好一段时间,大概长这样
发现快下班了,赶紧接着干
3.想实现消息的推送肯定离不开websocket,websocket是什么,我根据掌握的知识简单介绍一下(如果讲错了欢迎指正):与http属于同一档的通信协议协议名称ws,如ws://127.0.0.1:8888/,她的特性如下:
3.1全双工通信,即服务器和客户端可相互发送报文
3.2保持长连接,与http不同,websocket发起请求,服务进行响应握手成功并不马上关闭连接,而是保持连接状态直到主动断开。
我们很容易就知道的应用领域了,对,IM(即时通讯)是很重要的一部分,在达到一定数量级的请求下,相比于用http做ajax轮询不知道高到哪里去了。
使用node实现websocket服务器有多种方式,websocket ,ws,socket.IO,还有我忘了,我选用了ws,原因很单纯:npm安装之后网上Ctrl+CV一份很短的代码,直接就跑起来了,听说socket.IO很不错的,有兴趣的朋友可以试试,ws方式的代码如下:
const WebSocketServer = require('ws').Server;// 创建websocket服务器const wss = new WebSocketServer({ port: 8888 });// 注册连接开启事件,同时其他事件的初始化wss.on('connection', function (ws) { console.log('ws client connected');//接收客户端发送的报文事件 ws.on('message', function (data) { ws.send('from ws:8888'); }); // 注册连接关闭事件 ws.on('close', function (message) { //code });});console.log('websocket server running at ws://127.0.0.1:8888/');
为了能够让websocket对象能够让后端的Java项目的代码控制,接着建立一个http节点与后者所在服务器进行通信,代码如下:const express = require('express');const app = express();// 向Java提供单条数据发送的接口app.get('/push',function(req,resp){ //code})// 创建http服务器app.listen(8787,function(){ console.log('http server running at http://127.0.0.1:8787/'); // 配置资源文件路径 app.use(express.static('../public'));});总体的通信流程如下:总结
写到这里不禁要感叹一下nodejs的强大:不同于Java,php等依赖于第三方服务器,node分分钟就建立了一个服务节点,并在上文中可以看到,服务也是抽象的对象,在代码中http和ws节点可以很自然而然地共用彼此的数据此后还有包括websocket连接对象管理,nodejs代码模块化没有说完,当时写到这就下班了,有时间日后y我会接着开一篇文章写完的,因为是第一次使用nodejs,所以有什么错误的地方希望大家指出,非常感谢
0 0
- 用node搭建一个简单的websocket服务器
- 搭建一个简单的node.js服务器
- 用node.js 搭建一个简单的服务器
- Node.js学习-----------搭建一个简单的HTTP服务器
- 如何搭建一个简单的本地node.js服务器
- 使用node.js搭建一个简单的本地服务器
- 用Python实现一个简单的WebSocket服务器
- python 实现一个简单的 WebSocket 服务器
- 用node.js搭建的简单web服务器
- 利用node简单的搭建线上服务器
- windows下使用WebSocket-Node搭建WebSocket服务器
- 用Apache搭建一个简单的服务器
- Node.js 一个简单的Web服务器
- node编写一个简单的服务器
- 搭建一个简单的服务器
- 一个简单的 websocket的 c++ 服务器 实现windows
- 基于Node.js服务器的WebSocket Video
- 微信小程序基于node.js的websocket服务器搭建和SSL证书申请、配置全家桶
- NotePad++下Java运行编译配置
- Java基础进阶_day07_(泛型,Collection集合,迭代器,增强for循环)
- MD5摘要算法介绍及其实现
- Android 6.0 运行时权限处理完全解析
- 接口
- 用node搭建一个简单的websocket服务器
- ng中的路由和单页面应用
- 通过分析 JDK 源代码研究 TreeMap 红黑树算法实现
- 第一章 Web MVC简介
- 六天带你玩转Mysql笔记--第六天
- HTML常见标签及块级元素同行内元素的区别
- hibernate 初级2
- js特效03 offsetHeight scrollHeight clientHeight
- 读《高效能人士的七个习惯》
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
答应英语
答应我
答应怎么读
答应 英文
答应的读音
答应你
能答应儿子给一次他吗
答应的近义词
答应的反义词
高考答应孩子性要求
答应拼音怎么写
答应儿子考好给他口
考试老妈答应
答应一周给儿子口一次text
答应孩子帮他口
再不答应就亲你
答应的拼音是什么
答应是什么意思
答应的英语单词
答应用英语怎么说
我叫你一声你敢答应吗
答案
课课练答案
答案大全
课后答案网
答案吧
答案网免费下载答案
答案软件
答案网下载
什么答案
试卷答案网
答案英语
答案书
答案app
答案英文
答案图片
答案网站
答案歌曲
初中答案网
答案之书
歌曲答案