基于node.js与websocket的简单通信实现

websocket实战

启动编写好的服务器:

基于node.js与websocket的简单通信实现

先运行服务器,再运行客户端。

客户端运行结果:
基于node.js与websocket的简单通信实现

具体demo实现过程

demo1:

基于node.js与websocket的简单通信实现
连接远程服务器,注意使用的是websocket协议:

基于node.js与websocket的简单通信实现
服务器:客户端将消息发送到这个服务器,它又原封不动的将数据返回给客户端,所以取名echo也是很形象了。

在开始运行自己创建的服务器demo之前,需要安装websocket模块:
基于node.js与websocket的简单通信实现
根据测试样例,测试环境是否安装成功:
基于node.js与websocket的简单通信实现
将官网的代码复制到本地:
基于node.js与websocket的简单通信实现
代码解析:客户端有消息发送过来:
基于node.js与websocket的简单通信实现
数据放在str里面,sendtxt函数将处理之后的str又发送回去。基于node.js与websocket的简单通信实现
链接关闭……

demo2:要使用自己创建的服务器,将地址改成本地的服务器

基于node.js与websocket的简单通信实现
运行编写好的服务器文件,连接成功:
基于node.js与websocket的简单通信实现
运行HTML界面,发送消息,在控制台可以看到服务器的信息,但是有点问题,当直接在浏览器关闭网页时,控制台会输出一个错误,导致服务器停止运行:
基于node.js与websocket的简单通信实现
根据提示,有个错误事件未处理。

一切问题先找官方文档,毕竟官方吐槽最为致命,官方指导较为准确:

添加处理错误事件的代码:
基于node.js与websocket的简单通信实现
命令行重新启动服务器即可:
基于node.js与websocket的简单通信实现

demo3:

基于node.js与websocket的简单通信实现
实现的主要功能,当我们点击按钮的时候,发送数据给server。
基于node.js与websocket的简单通信实现
客户端接受到返回的数据时,新建div,将数据展示出来。
基于node.js与websocket的简单通信实现
广播,将服务器接收到的信息发送给各个客户端:
基于node.js与websocket的简单通信实现
广播函数,获取服务器存在的连接,为每个连接调用广播函数,发出消息。

改造好之后的服务器端代码:
基于node.js与websocket的简单通信实现
运行结果:
基于node.js与websocket的简单通信实现
基于node.js与websocket的简单通信实现

基于node.js与websocket的简单通信实现

demo4:

建立对象存储数据,对对象的style属性进行设置,区分广播信息:
基于node.js与websocket的简单通信实现
连接与关闭状态处理的改动:
基于node.js与websocket的简单通信实现
显示函数改造:
基于node.js与websocket的简单通信实现

基于node.js与websocket的简单通信实现
明确消息发送主体(这里标错文件了,应该是html文件中的代码):
基于node.js与websocket的简单通信实现
运行结果:
基于node.js与websocket的简单通信实现
基于node.js与websocket的简单通信实现
基于node.js与websocket的简单通信实现
基于node.js与websocket的简单通信实现

demo5

socket.io是实现socket通信的框架

安装socket.io模块:
基于node.js与websocket的简单通信实现
将socket.io.js文件下载到本地:
基于node.js与websocket的简单通信实现
开始demo5的编写,拷贝官网的样例代码(第一个文件名标错了)
基于node.js与websocket的简单通信实现基于node.js与websocket的简单通信实现

socket.io的优势:

  1. 可以直接发送对象;

  2. 可以自定义事件。

复制一份到了demo6:
基于node.js与websocket的简单通信实现
复制文件:
基于node.js与websocket的简单通信实现
基于node.js与websocket的简单通信实现
引入socket.io.
基于node.js与websocket的简单通信实现
引入模块:
基于node.js与websocket的简单通信实现
基于node.js与websocket的简单通信实现
接在上一个函数内部
基于node.js与websocket的简单通信实现
基于node.js与websocket的简单通信实现
改造完毕:
基于node.js与websocket的简单通信实现
HTML界面的主要改造:
基于node.js与websocket的简单通信实现

运行结果:
基于node.js与websocket的简单通信实现
可以看到使用socket.io框架,在服务器端较大的减少了开发的工作量。

代码仅供参考:

https://github.com/catherinela/simple-project-of-websocket