加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 正文

行使socket.io和node.js搭建websocket应用

发布时间:2018-10-07 02:00:38 所属栏目:创业 来源:站长网
导读:websocket是HTML5的一种新的通讯协议,它是实现了赏识器与处事器的双向通信。在 WebSocket API 中,赏识器和处事器只必要要做一个握手的举措,然后,赏识器和处事器之间就形成了一条快速通道。两者之间就直接可以数据相互传送。 关于websocket的更多信息,

websocket是HTML5的一种新的通讯协议,它是实现了赏识器与处事器的双向通信。在 WebSocket API 中,赏识器和处事器只必要要做一个握手的举措,然后,赏识器和处事器之间就形成了一条快速通道。两者之间就直接可以数据相互传送。
关于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哦~');
}

此刻chrome、firefox等赏识器都已经支持了websocket,而IE却没有。下面我们来简朴说说处事器端对websocket的支持。

处事器端支持websocket的说话不少,并且都有相干的开源项目,譬喻php的phpwebsockets:http://code.google.com/p/phpwebsockets/,java的jWebsocket:http://jwebsocket.org/。
更多的信息可以赏识这篇文章:Start Using HTML5 WebSockets Today

socket.io

socket.IO是一个websocket库,包罗了客户端的js和处事器端的nodejs。官方地点:http://socket.io

客户端行使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和nodejs搭建websocket处事器端

socket.io不只可以搭建客户端的websocket处事,并且支持nodejs处事器端的websocket。

nodejs安装socket.io

行使node插件打点包,运行下面的呼吁就可以安装乐成socket.io

npm install socket.io

没有npm的可能windows用户可以行使github下载socket.io而且放入到node_modules文件夹中,详细设置可以参考文章:《nodejs教程:设置nodejs.exe的windows目次布局》

nodejs成立socket.io处事

通过nodejs的http模块就可以利便的搭建websocket处事器情形,譬喻下面的代码:

// 引入必要的模块:http和socket.io
var http = require('http'), io = require('socket.io');
//建设server
var server = http.createServer(function(req, res){ 
  // Send HTML headers and message
  res.writeHead(200,{ 'Content-Type': 'text/html' }); 
  res.end('<h1>Hello Socket Lover!</h1>');
});
//端口8000
server.listen(8080);
//建设socket
var socket = io.listen(server);
//添加毗连监听
socket.on('connection', function(client){   
	//毗连乐成则执行下面的监听
	client.on('message',function(event){ 
		console.log('Received message from client!',event);
	});
	//断开毗连callback
	client.on('disconnect',function(){
		console.log('Server has disconnected');
	});
});


生涯为socket.js然后在呼吁行执行:node socket.js 即可启动处事器,此刻会见localhost:8000就可以了。

行使express和socket.io

前篇文章我提到了nodejs的web框架:express,下面的代码就可以建设一个基于express和socket.io的socket应用:

var app = require('express').createServer(), 
	io = require('socket.io').listen(app);
app.listen(80);
app.get('/', function (req, res) {
	res.sendfile(__dirname + '/index.html');
});
io.sockets.on('connection', function (socket) {
	//发送动静给客户端
	socket.emit('news', { hello: 'world' });
	socket.on('my other event', function (data) {
		console.log(data);
	});
	//广播信息给除当前用户之外的用户
	socket.broadcast.emit('user connected');
	//广播给全体客户端
	io.sockets.emit('all users');
});

和客户端的要领一样,socket.io的监听都是行使on要领,发送行使emit要领。其它提供了广播成果:broadcast

写在最后

最近写文章较量勤,首要是怕本身十一放假返来头绪就乱了,以是在十一之前清算出来最近胡乱进修nodejs的一些心得领会,海内的nodejs资料太少了,进修本钱挺高的。
前天晚上写的一个基于express+socket.io的谈天室已经放到了网上,接待各人下载测试。

下篇文章也许要写在express和socket.io中实现session认证。由于上面的谈天室用到了session判定用户是否登录。其它本身写了个nodejs的斗田主,然则逻辑相等的伟大,于是代码也就越写越烂,写到最后测试逻辑就开始夹杂,有空还要清算下才气放出来哦~省的拿出去丢人。羞愧啊~

来历:http://www.js8.in/784.html

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读