• node的express中使用socket.io


    服务器端server.js代码

     1 var express=require("express");
     2 var http=require("http");
     3 var sio=require("socket.io");
     4 var app=express();
     5 var server=http.createServer(app);
     6 var fs=require("fs");
     7 app.get("/", function (req,res) {
     8    res.sendfile(__dirname+"/index.html");
     9 });
    10 server.listen(1337);
    11 var socket=sio.listen(server);
    12 socket.on("connection", function (socket) {
    13     socket.emit("news",{hello:"你好"});
    14     socket.on("otherEvent", function (data) {
    15         console.log("服务器端接受到数据:%j",data);
    16     })
    17 });

    客户端index.html代码

     1 <!DOCTYPE html>
     2 <html>
     3 <head lang="en">
     4     <meta charset="UTF-8">
     5     <title></title>
     6     <script src="/socket.io/socket.io.js"></script>
     7     <script>
     8         var socket=io.connect();
     9         socket.on("news", function (data) {
    10             console.log(data.hello);
    11             socket.emit("otherEvent",{my:"data"});
    12         });
    13     </script>
    14 </head>
    15 <body>
    16 
    17 </body>
    18 </html>

    忽然想到一个问题.我可不可以把news的监听代码写到和emit的同一端.

    这样:

     1 var express=require("express");
     2 var http=require("http");
     3 var sio=require("socket.io");
     4 var app=express();
     5 var server=http.createServer(app);
     6 app.get("/", function (req,res) {
     7     res.sendfile(__dirname+"/index.html");
     8 });
     9 server.listen(1337,"127.0.0.1", function () {
    10     console.log("开始监听1337");
    11 });
    12 var socket=sio.listen(server);
    13 
    14 socket.on("connection", function (socket) {
    15     socket.on("news", function (data) {
    16     console.log(data.hello);
    17     });
    18     socket.emit("news",{hello:"你好"});
    19 });

    注意15~17行代码:是我们新添加的.

    事实证明不可以,不会有任何的打印.但是也是不会报错的.

    emit的执行,美其名曰:发送事件.如果有参数,美其名曰:携带参数.

  • 相关阅读:
    AirtestIDE基本功能(二)
    AirtestIDE基本功能(一)
    Pycharm Debug功能详解
    AirtestIDE环境安装
    leetcode-338. 比特位计数
    leetcode-401. 二进制手表
    leetcode-392. 判断子序列
    leetcode-155. 最小栈
    leetcode-111. 二叉树的最小深度
    leetcode-110. 平衡二叉树
  • 原文地址:https://www.cnblogs.com/guoyansi19900907/p/4161436.html
Copyright © 2020-2023  润新知