利用Web Socket技术实现client端与server端的连接(以Node.js作为服务器端)

简介:

几乎搞了一个工作日的时间,查找了很多的资料,学习,调试,最终终于把利用web socket方法,在node.js作为服务器的情况下,实现了client端与server端的交互,没办法,学习的过程就是这样,经历过痛苦之后,才能永生~~

虽然web socket这项技术早已经出来了,国外大概在10年就有人去研究,国内的我看最早的大概是在11年(也许有更早的,我没有看到相关资料罢了),而我呢,确是在这几天因为工作的原因,才知道这么个东西,才准备去学习一下。(要知道我学习java script才几天的时间,就在我写这篇文章的时候我还在学习什么是json,oh, my god! 好吧,我之前是搞C++的)。

其实我不太想让大家经历一遍我的痛苦,所以我直接把大家可能遇到最原始的问题发出来。

如果你安装好了node.js之后,并且按照网上大多数的讲web socket技术的资料上写的那样,用js 将服务器端和客户端都写好之后(这两个我相信大家都应该比我更容易掌握,毕竟我才刚接触js),实际上你就可以在命令行中直接运行node xxx.js程序就Ok 了,然后你用你的客户端去连接这个服务器地址,如果出现:TypeError: Object #<WriteStream> has no method 'flush', 直译就是找不到flush 方法。大家发现process.stdou.flush();不难发现这是一条类似于打印语句的东西,所以//掉它,结果发现问题更让人迷惑,最重要的是从来没有成功连接过,所以也不知道成功之后是什么样子的。

这个问题的原因可能在于大家下的一个web socket第三方库,也许你下载的地址是:

https://github.com/remy/html5demos/tree/master/server/ 这个网址真是害人啊,从网上看帖子说的原因是这个库不适用于node.js xx版本之后,因为node.js不断更新,这个库已经不跟着更了,这个有点坑人啊!所以最新的第三方库大家可以下载这个网址上的:

https://github.com/Worlize/WebSocket-Node 一试便成,好东西。然后所有的事情就解决了,可以安心看看代码,然后在其基础上进行修改了。

大家下载解压之后,运行WebSocket-Node-master\test目录下的echo-server.js,然后用自己写的客户端直接连http://localhost:8080  就行了,这个8080是echo-server.js文件里定义的。然后就能连上了,真是让人兴奋啊!

希望大家研究过web socket的人能一起多多交流,还有很多要和大家学习。










本文转自 我不会抽烟 51CTO博客,原文链接:http://blog.51cto.com/zhouhongyu1989/1290088,如需转载请自行联系原作者

目录
相关文章
|
4月前
|
安全
基于Reactor模式的高性能服务器之Acceptor组件(处理连接)
本节介绍了对底层 Socket 进行封装的设计与实现,通过 `Socket` 类隐藏系统调用细节,提供简洁、安全、可读性强的接口。重点包括 `Socket` 类的核心作用(管理 `sockfd_`)、成员函数的功能(如绑定地址、监听、接受连接等),以及 `Acceptor` 组件的职责:监听连接、接收新客户端连接并分发给上层处理。同时说明了 `Acceptor` 与 `EventLoop` 和 `TcpServer` 的协作关系,并展示了其成员变量和关键函数的工作机制。
118 2
|
3月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle客户端与服务器端连接建立的过程
Oracle数据库采用客户端-服务器架构,客户端通过其网络环境与服务器通信,实现数据库访问。监听程序负责建立连接,通过命令lsnrctl可启动、停止及查看监听状态。本文介绍了监听器的作用及相关基础管理操作。
193 0
|
JavaScript
使用Node.js创建一个简单的Web服务器
使用Node.js创建一个简单的Web服务器
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
287 3
|
Apache 数据中心 Windows
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?
|
前端开发 网络协议 JavaScript
在Spring Boot中实现基于WebSocket的实时通信
在Spring Boot中实现基于WebSocket的实时通信
|
6月前
|
Java
SpringBoot快速搭建WebSocket服务端和客户端
由于工作需要,研究了SpringBoot搭建WebSocket双向通信的过程,其他的教程看了许多,感觉讲得太复杂,很容易弄乱,这里我只展示快速搭建过程。
2024 1
|
开发框架 前端开发 网络协议
Spring Boot结合Netty和WebSocket,实现后台向前端实时推送信息
【10月更文挑战第18天】 在现代互联网应用中,实时通信变得越来越重要。WebSocket作为一种在单个TCP连接上进行全双工通信的协议,为客户端和服务器之间的实时数据传输提供了一种高效的解决方案。Netty作为一个高性能、事件驱动的NIO框架,它基于Java NIO实现了异步和事件驱动的网络应用程序。Spring Boot是一个基于Spring框架的微服务开发框架,它提供了许多开箱即用的功能和简化配置的机制。本文将详细介绍如何使用Spring Boot集成Netty和WebSocket,实现后台向前端推送信息的功能。
3106 1
|
9月前
|
消息中间件 XML 前端开发
springBoot集成websocket实时消息推送
本文介绍了如何在Spring Boot项目中集成WebSocket实现实时消息推送。首先,通过引入`spring-boot-starter-websocket`依赖,配置`WebSocketConfig`类来启用WebSocket支持。接着,创建`WebSocketTest`服务器类,处理连接、消息收发及错误等事件,并使用`ConcurrentHashMap`管理用户连接。最后,前端通过JavaScript建立WebSocket连接,监听消息并进行相应处理。此方案适用于需要实时通信的应用场景,如聊天室、通知系统等。
1396 2
|
JavaScript 前端开发 网络协议
WebSocket在Java Spring Boot+Vue框架中实现消息推送功能
在现代Web应用中,实时消息提醒是一项非常重要的功能,能够极大地提升用户体验。WebSocket作为一种在单个TCP连接上进行全双工通信的协议,为实现实时消息提醒提供了高效且低延迟的解决方案。本文将详细介绍如何在Java Spring Boot后端和Vue前端框架中利用WebSocket实现消息提醒功能。
1577 127