详解node.js基于express使用websocket

小云云
Lepaskan: 2017-12-23 09:03:50
asal
2805 orang telah melayarinya

本文主要介绍了node.js基于express使用websocket的方法,结合实例形式分析了node.js基于express调用websocket相关设置与使用操作技巧,需要的朋友可以参考下,希望能帮助到大家。

这个效果我也是翻了好长时间的资料,测试才成功的,反正成功,大家看看吧

首先你需要安装socket.io模块


npm install socket.io --save
Salin selepas log masuk

然后打开express的app.js将模块引入,在12行左右的


var app = express();
Salin selepas log masuk

下面添加两行


var server = require('http').Server(app);
var io = require('socket.io')(server);
Salin selepas log masuk

然后在20多行里面添加


app.use(function(req, res, next){
 res.io = io;
 next();
});
Salin selepas log masuk

由于本人不喜欢从www里面启动,所以在app.js里面又添加了几行代码,添加到底部的倒数第二行以上


var port = 3000;
app.set('port', port);
server.listen(port);
Salin selepas log masuk

这就开始监听3000端口了

这样,准备工作已经完成了,然后开始进行示例

用官方的示例代码测试,可以直接写到app.js里面


io.on('connection', function (socket) {
 socket.emit('news', { hello: 'world1' });
 socket.on('my other event', function (data) {
  console.log(data);
 });
});
Salin selepas log masuk

服务端的准备工作已经完成,在客户端页面首先将socket.js文件引入


<script src=&#39;javascripts/socket.io-1.4.5.js&#39;></script>
var socket = io.connect("//localhost:3000");
socket.on(&#39;news&#39;, function (data) {
  console.log(data);
  alert(data);
  socket.emit(&#39;my other event&#39;, { my: &#39;data&#39; });
});
Salin selepas log masuk

然后打开页面测试一下

如果想只在一个页面里服务端发送信息,可以这么写

router.get(&#39;/&#39;, function(req, res, next) {
  //只有当前页面可以获得
  res.io.on(&#39;connection&#39;, function(socket) {
    socket.emit(&#39;news&#39;, {
      hello: &#39;world&#39;
    });
    socket.on(&#39;my other event&#39;, function(data) {
      console.log(data);
    });
  });
  //所有页面都可以获得
  var io = require("../app").io;
  io.emit("news",{hello:"myworld"});
  res.render("pclogin.ejs", {});
});
Salin selepas log masuk

相关推荐:

关于WebSocket部署服务器外网无法连接的解决方案

php中关于websocket的详细介绍

nodejs+websocket完成一个聊天系统功能

Atas ialah kandungan terperinci 详解node.js基于express使用websocket. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan