`

基于node的webSocket应用

阅读更多

html推出了webSocket。因为毕业设计要用到聊天室的功能,所以就研究了下webSocket的应用。

在客户端使用websocket需要创建WebSocket对象,通过提供的open、send、message、close等方法实现创建、发送、监听信息、关闭连接。例如下面的代码:

if('WebSocket' in window){
	// 创建websocket实例
	var socket = new WebSocket('ws://localhost:8080');
	//打开
	socket.onopen = function(event) {
	  // 发送
	  socket.send('I am the client and I\'m listening!');
	  // 监听
	  socket.onmessage = function(event) {
		console.log('Client received a message',event);
	  };
	  // 关闭监听
	  socket.onclose = function(event) {
		console.log('Client notified socket has closed',event);
	  };
	  // 关闭
	  //socket.close()
	};
}else{
	alert('本浏览器不支持WebSocket哦~');
}
Socket.Io是个JavaScript框架,包括服务器端和客户端,使用统一的API封装了各种实时连接(如WebSocket、Flash Socket、AJAX长轮询等),使得后端的连接可以对开发人员透明。
Socket.IO使用检测功能来判断是否建立WebSocket连接,或者是AJAX long-polling连接,或Flash等。可快速创建实时的应用程序。
Socket.IO可以从GitHub下载,可以把socket.io.js文件包含到页面中:
复制代码
CODE:
<script src="http://cdn.socket.io/stable/socket.io.js"></script>
[/code

此时,Socket.IO在此页面上是有效的,是时候创建Socket了:

[code]
// 创建Socket.IO实例,建立连接
var socket= new io.Socket('localhost',{ 
  port: 8080 
}); 
socket.connect(); 

// 添加一个连接监听器
socket.on('connect',function() { 
  console.log('Client has connected to the server!'); 
});

// 添加一个连接监听器
socket.on('message',function(data) { 
  console.log('Received a message from the server!',data); 
});

// 添加一个关闭连接的监听器
socket.on('disconnect',function() { 
  console.log('The client has disconnected!'); 
}); 

// 通过Socket发送一条消息到服务器
function sendMessageToServer(message) { 
  socket.send(message); 
}
复制代码
Socket.IO简化了WebSocket API,统一了返回运输的API。传输包括:
WebSocket
Flash Socket
AJAX long-polling
AJAX multipart streaming
IFrame
JSONP polling
你还可以设置任意的Socket.IO构造器的第二个选项,选项包括:
port - 待连接的端口
transports - 一个数组,包含不同的传输类型
transportOptions - 传输的参数使用的对象,带附加属性
Socket.IO还提供了由本地WebSocket API提供的普通连接、断开连接、消息事件。Socket还提供了封装每个事件类型的方法。

客户端使用socket.io

去github clone socket.io的最新版本,或者直接饮用使用socket.io的CDN服务:

<script src="http://cdn.socket.io/stable/socket.io.js"></script>

下面可以创建使用socket.io库来创建客户端js代码了:

var socket = io.connect('http://localhost');
socket.on('news', function (data) {
	console.log(data);
	socket.emit('my other event', { my: 'data' });
});

socket.on是监听,收到服务器端发来的news的内容,则运行function,其中data就是请求回来的数据,socket.emit是发送消息给服务器端的方法。

socket.io不仅可以搭建客户端的websocket服务,而且支持nodejs服务器端的websocket。

使用node插件管理包,运行下面的命令就可以安装成功socket.io

npm install socket.io

关于如何配置npm见前一篇文章

通过nodejs的http模块就可以方便的搭建websocket服务器环境,例如下面的代码:

server端:
复制代码
var  http = require('http')
    , socketio = require('socket.io');
 
var server = http.createServer(function(req, res) {
    res.writeHead(200, { 'Content-type': 'text/html'});
    console.log('Listening at: http://localhost:8080');
});
//添加一个连接监听器
socketio.listen(server).on('connection', function (client) {
    //监听成功
    client.on('message', function (msg) {
        console.log('Message Received: ', msg);
           client.send('message', msg);
    });
    client.on("disconnect", function() {
        console.log("Server has disconnected");
    })
});
复制代码

client端:

复制代码
<html>
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script src="/socket.io/socket.io.js"></script>

    
</head>
<body>
Incoming Chat:&nbsp;<ul id="incomingChatMessages"></ul>
<br />
<input type="text" id="outgoingChatMessage">
</body>
<script>
        $(function(){
            var iosocket = io.connect();
 
            iosocket.on('connect', function () {
                $('#incomingChatMessages').append($('<li>Connected</li>'));
 
                iosocket.on('message', function(message) {
                    $('#incomingChatMessages').append($('<li></li>').text(message));
                });
                iosocket.on('disconnect', function() {
                    $('#incomingChatMessages').append('<li>Disconnected</li>');
                });
            });
 
            $('#outgoingChatMessage').keypress(function(event) {
                if(event.which == 13) {
                    event.preventDefault();
                    iosocket.send($('#outgoingChatMessage').val());
                    $('#incomingChatMessages').append($('<li></li>').text($('#outgoingChatMessage').val()));
                    $('#outgoingChatMessage').val('');
                }
            });
        });
    </script>
</html>
复制代码
把服务端代码保存为socket.js然后在命令行执行:node socket.js 即可启动服务器,用浏览器打开两个页面就可以测试了。
注:代码要和npm_module在同一个目录下。不然会出现找不到socket.io module的错误。
分享到:
评论

相关推荐

    Node.js-基于nodewebsocket在线聊天程序

    Node.js 结合 WebSocket 提供了一种高效且强大的方式来构建实时通信应用,如在线聊天程序。通过理解和应用这些技术,开发者可以创建出具有低延迟、高交互性的网络应用。在 `fiveChat-master` 项目中,我们可以学习到...

    基于node实现websocket协议

    总的来说,Node.js结合WebSocket协议可以构建高性能的实时Web应用。开发者需要注意正确处理WebSocket的连接、帧传输以及错误处理,以确保服务的稳定性和安全性。在实际开发中,还可以考虑使用第三方库如ws或socket....

    WebSocket-Node的demo

    本示例"WebSocket-Node"是基于Node.js实现的一个WebSocket服务端示例,展示了如何在Node.js环境中搭建WebSocket服务器并进行基本的交互。 首先,我们需要了解WebSocket API的基本概念。WebSocket API是HTML5的一...

    node websocket server

    本文将详细介绍如何使用Node.js构建WebSocket服务器,并基于提供的"node websocket server"项目进行讲解。 首先,让我们了解WebSocket的基本概念。WebSocket API设计为HTML5的一部分,通过TCP提供低延迟、高效率的...

    基于websocket的实时单页应用开发框架1

    综上所述,基于WebSocket的实时单页应用开发框架结合了WebSocket的双向通信能力和SPA的页面交互优势,能够为用户带来更流畅、实时的交互体验。开发者在实际应用中,应选择合适的开发工具和框架,充分理解WebSocket...

    Node.js-基于node-websocket的一个简易的聊天功能

    通过以上步骤,我们就实现了基于 Node.js 和 WebSocket 的简单聊天功能。这个项目可以帮助你理解 WebSocket 协议的工作原理以及如何在 Node.js 中使用它。你可以在此基础上扩展功能,比如添加用户身份验证、聊天室...

    Node.js-部署到Now的流行WebSocket服务器示例

    Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它允许开发者在服务器端使用JavaScript进行编程。WebSocket协议是HTML5引入的一种在单个TCP连接上进行全双工通信的协议,它为实时通信提供了低延迟、高效率的...

    node-websocket-server-master

    总的来说,"node-websocket-server-master" 提供了一个学习和实践使用 Node.js 构建 WebSocket 服务器的机会,涵盖了从基础的 Node.js 编程到高级的网络应用开发等多个方面。通过研究这个项目,开发者不仅可以提升对...

    基于node+vue+element ui的websocket在线客服系统(简单实现)

    这个基于Node.js、Vue.js和Element UI的WebSocket在线客服系统,虽然只是大二学生的课程设计作品,但它体现了现代Web开发中的重要技术和实践,对于初学者来说,是一个很好的学习和实践平台。通过这个项目,你可以...

    基于node+websocket+html实现腾讯课堂聊天室聊天功能

    基于Node.js、WebSocket和HTML技术栈构建一个类似腾讯课堂的在线聊天室是一个典型的全栈开发案例,涉及到前端和后端的编程技能。以下是相关的知识点详解: ### 1. Node.js基础 Node.js是一个基于Chrome V8引擎的...

    node.js websocket

    总的来说,Node.js与WebSocket的结合为构建高性能、实时的Web应用提供了强大的工具。理解WebSocket的基本原理,掌握其在Node.js中的使用,以及了解相关的最佳实践,对于任何希望涉足这一领域的开发者都至关重要。

    基于websocket协议的简易视频直播

    6. 后端实现:后端服务器需要处理WebSocket连接,可以使用Node.js的ws库,Python的WebSocket-server等框架。服务器不仅需要管理连接,还需要处理视频数据的接收、解码和转发。 7. 实时传输协议(RTP)与实时传输控制...

    使用Node.js+Socket.IO搭建WebSocket实时应用

    本节将基于Node.js和Socket.IO实现一个简易的多人在线聊天室应用,具体需求包括: 1. **兼容性**:考虑到不同浏览器的支持情况,应用需支持WebSocket和其他回退方案。 2. **用户名管理**:允许客户端使用相同的...

    使用websocket的node.js服务器DEMO

    Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它让开发者能够在服务器端使用JavaScript编写高性能的网络应用。Node.js利用非阻塞I/O和事件驱动模型,使得处理高并发请求变得轻而易举。 在Node.js中,`...

    基于vue和websocket的多人在线聊天室

    在本文中,我们将探讨如何构建一个基于Vue.js和WebSocket的多人在线聊天室。Vue.js是一个流行的前端JavaScript框架,用于构建用户界面,而WebSocket则是一种在客户端和服务器之间提供全双工、低延迟通信的协议。结合...

    基于node+html5实现websocket即时通信.zip

    基于Node.js和HTML5的WebSocket技术,可以构建出高效、实时的Web应用,比如在线游戏、聊天室、实时股票更新等。下面将详细阐述WebSocket的基本概念、工作原理以及如何使用Node.js和HTML5来实现WebSocket即时通信。 ...

    基于Node.js的WebSocket通信实现

    WebSocket是一种在客户端和...以上就是基于Node.js的WebSocket通信实现的基本步骤和用户身份识别的策略。实际应用中,你可能还需要处理更多细节,如错误处理、心跳检测、连接恢复等,以确保通信的稳定性和可靠性。

    nodejs+websocket实现简单的多人聊天

    在IT行业中,Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它以其高效的异步I/O和非阻塞I/O模型而闻名,非常适合构建实时、交互式的网络应用。WebSocket协议则是一种在客户端和服务器之间建立长连接的协议...

    基于websocket的在线客服系统

    本项目“基于WebSocket的在线客服系统”是针对大学生课程设计的一个实例,旨在让学生理解并掌握WebSocket在实际应用中的使用。 WebSocket协议是HTTP/1.1协议的扩展,其核心目标是提供全双工通信通道,让服务器能够...

    Node.js-基于Node快速构建WEB应用服务的框架

    基于Node.js的Web应用服务框架有很多,它们为开发者提供了更高级别的抽象,帮助快速构建稳定、可扩展的应用。标题中提到的“基于Node快速构建WEB应用服务的框架”可能是指Express.js、Koa.js、Sails.js等常见的Node....

Global site tag (gtag.js) - Google Analytics