zoukankan      html  css  js  c++  java
  • node.js express使用websocket

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

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

    [javascript] view plain copy

    1. npm install socket.io --save  

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

    [javascript] view plain copy

    1. var app = express();  

    下面添加两行

    [javascript] view plain copy

    1. var server = require('http').Server(app);  
    2. var io = require('socket.io')(server);  

    然后在20多行里面添加

    [javascript] view plain copy

    1. app.use(function(req, res, next){  
    2.   res.io = io;  
    3.   next();  
    4. });  

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

    [javascript] view plain copy

    1. var port = 3000;  
    2. app.set('port', port);  
    3.   
    4. server.listen(port);  

    这就开始监听3000端口了

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

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

    [javascript] view plain copy

    1. io.on('connection', function (socket) {  
    2.   socket.emit('news', { hello: 'world1' });  
    3.   socket.on('my other event', function (data) {  
    4.     console.log(data);  
    5.   });  
    6. });  

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

    [javascript] view plain copy

    1. <script src='javascripts/socket.io-1.4.5.js'></script>  
    2.         var socket = io.connect("//localhost:3000");  
    3.         socket.on('news', function (data) {  
    4.             console.log(data);  
    5.             alert(data);  
    6.             socket.emit('my other event', { my: 'data' });  
    7.         });  

    然后打开页面测试一下

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

    [javascript] view plain copy

    1. router.get('/', function(req, res, next) {  
    2.     //只有当前页面可以获得  
    3.     res.io.on('connection', function(socket) {  
    4.         socket.emit('news', {  
    5.             hello: 'world'  
    6.         });  
    7.         socket.on('my other event', function(data) {  
    8.             console.log(data);  
    9.         });  
    10.     });  
    11.     //所有页面都可以获得  
    12.     var io = require("../app").io;  
    13.     io.emit("news",{hello:"myworld"});  
    14.     res.render("pclogin.ejs", {});  
    15. });  

  • 相关阅读:
    剑指office--------合并两个排序的链表
    剑指office--------栈的压入、弹出序列
    剑指office--------二叉树中和为某一值的路径
    剑指office--------翻转单词顺序列
    剑指office--------丑数
    剑指office--------机器人的运动范围
    剑指office--------二叉树的下一个结点
    数论------欧拉函数
    hdu 5831 Rikka with Parenthesis II
    hdu 5821 Ball (贪心)
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13313577.html
Copyright © 2011-2022 走看看