nodejs websocket

2024-09-07 02:48
文章标签 websocket nodejs

本文主要是介绍nodejs websocket,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

express-ws是express的一个中间件,借助其我们可以在express中实现websocket的功能。

其github地址为:git@github.com:Sirchongxue/nodejs-websocket.git

通过npm install express-ws可以安装。

var express = require('express');

var express = require('express');  

var app = express();  
var expressWs = require('express-ws')(app);  
var util = require('util');  
app.use(express.static('public'));  
//ejs
app.set('view engine','ejs');


app.get('/',function(req,res){
    res.render('control');
})


app.ws('/ws', function(ws, req) {  
  util.inspect(ws);  
 
    ws.on("message",function(str){
        hander(str,ws);
         
    });
    ws.on("close",function(code,reason){
        console.log('connection closed');
    })
    //处理错误事件信息
    ws.on('error',function(err){
        console.log('throw err',err);
    })


}) 
function hander(str,ws) {  
    //发送数据到客户端
    //console.log(str);
    var arr = str.split('');
    if(arr[2]==1){//close
        arr[2]=0;
    }else{
        arr[2]=1;
    }
    //console.log(arr.join(''));
    ws.send(arr.join(''));   
}


app.listen(3000);
 

html 页面如下

<!DOCTYPE html><!DOCTYPE html>
<html lang="en">
<head>


<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="js/jquery.mobile-1.4.5.min.css">
<script src="js/jquery-1.11.3.min.js"></script>
<script src="js/jquery.mobile-1.4.5.min.js"></script>
    <title>Title</title>
    <style>
        form{
            margin: 30px auto;
            width: 35%;
        }
    </style>
 




</head>
<body>
<br>
<form class="form">
    <fieldset>
        <legend>websocket 控制</legend>
        <br>
        <br>
        <div>  
    <button type="button" style="background: #EEF9F3" id="deng1" value="100">灯1</button>
    <button type="button" style="background: #EEF9F3" id="deng2" value="110">灯2</button> 
        </div>
        <br>
         
        <span id='content'>客户端未连接</span></br>
        <span id='states1'>deng1 close:100</span></br>
        <span id='states2'>deng2 close:110</span></br>
        <input type="button" value="连接" id="connect" class="connect"/>
    </fieldset>
</form>
<script>
    var oUl=document.getElementById('content');
    var oConnect=document.getElementById('connect');
    var oSend=document.getElementById('send');
    var oInput=document.getElementById('message');
    var ws=null;
    oConnect.οnclick=function(){
        ws=new WebSocket('ws://localhost:5000');
        ws.onopen=function(){
             
            document.getElementById('content').innerHTML = "客户端已连接";
        }
        ws.onmessage=function(evt){ 
            
            //document.getElementById('states').innerHTML = "deng : "+evt.data
            var arr = evt.data.split('');
            if(arr[1]==0){//deng1
                var deng = "deng1";
                changeState(deng,'states1');
            }else if(arr[1]==1){//deng2
                var deng = "deng2";
                changeState(deng,'states2');
            } 
            function changeState(deng,state){
                $('#'+deng).val(evt.data);
                if(arr[2]==1){//open 
                    document.getElementById(state).innerHTML = deng+" open:"+evt.data;
                    $('#'+deng).css("background-color","#B3B4A6");
                }else if(arr[2]==0){
                    document.getElementById(state).innerHTML = deng+" close:"+evt.data;
                    $('#'+deng).css("background-color","#EEF9F3");
                }
            }   
            /*oUl.innerHTML ="<li>"+(typeof evt.data)+"</li>";*/
            //getresult(evt.data);
        }
        ws.onclose=function(){
             
            document.getElementById('content').innerHTML = "客户端已断开连接";
        };
        ws.οnerrοr=function(evt){
            oUl.innerHTML+="<li>"+evt.data+"</li>";
        };
    };
    function getresult(data){
        if(data == '1'){
            document.getElementById('states').innerHTML = "灯1打开,灯2打开"
        }else if(data == '2'){
            document.getElementById('states').innerHTML = "灯1关闭,灯2关闭"
        }else if(data == '3'){
            document.getElementById('states').innerHTML = "灯1打开,灯2打开"
        }else if(data == '4'){
            document.getElementById('states').innerHTML = "灯1关闭,灯2打开"
        } 
    }
     
//$(document).on("pagecreate","#pageone",function(){
      $("#deng1").on("tap",function(){  
        ws.send($("#deng1").val());
      });                       
//});
      $("#deng2").on("tap",function(){ 
        ws.send($("#deng2").val());
      });  
    /*function clickDend(val){
        console.log(val)
        if(ws){
            ws.send(val);
        }
    }*/
</script>
</body>
</html>

运行 node web.js



这篇关于nodejs websocket的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1143843

相关文章

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

Java Websocket实例【服务端与客户端实现全双工通讯】

Java Websocket实例【服务端与客户端实现全双工通讯】 现很多网站为了实现即时通讯,所用的技术都是轮询(polling)。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发 出HTTP request,然后由服务器返回最新的数据给客服端的浏览器。这种传统的HTTP request 的模式带来很明显的缺点 – 浏 览器需要不断的向服务器发出请求,然而HTTP

nvm及nodejs安装相关

安装 1.清空文件夹,卸载nvm及nodejs 2.下载安装包 https://github.com/coreybutler/nvm-windows/releases (也下载有) 3.安装nvm 地址写D:/nvm和D:/nodejs 4.安装nodejs nvm ls available //查询版本nvm install 16.20.2 //安装对应版本号nvm use 1

Nodejs的Express框架使用总结

初始安装express,你也可以通过编辑器的shell安装依赖,比如vs # 创建并切换到 myapp 目录mkdir myappcd myapp# 初始化 package.json 文件npm init -y# 安装 express 到项目中npm i express 新建一个基础的接口 // 0. 加载 Expressconst express = require('expre

YApi 接口管理开源工具 nodejs+ mongoDB

前言介绍 Yapi 由 YMFE 开源,旨在为开发、产品、测试人员提供更优雅的接口管理服务,可以帮助开发者轻松创建、发布、维护 API。 权限管理 YApi 成熟的团队管理扁平化项目权限配置满足各类企业的需求 可视化接口管理 基于 websocket 的多人协作接口编辑功能和类 postman 测试工具,让多人协作成倍提升开发效率 Mock Server 易用的 Mock Server,

linux 安装 nodejs

1、去官网下载和自己系统匹配的文件:  英文网址:https://nodejs.org/en/download/  中文网址:http://nodejs.cn/download/  通过  uname -a  命令查看到我的Linux系统位数是64位(备注:x86_64表示64位系统, i686 i386表示32位系统),如图 故下载一下红色框中文件 ,版本为v6.10.0 2、

springboot websocket 服务端

在Spring Boot中使用WebSocket实现服务端和Java客户端的实时通信,可以分为几个步骤来完成。这里将详细介绍服务端和Java客户端的具体实现。 服务端设置 添加依赖: 在pom.xml文件中添加Spring WebSocket的依赖。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spr

【NodeJS】Error: Cannot find module 'ms'

转载自:http://blog.csdn.net/echo_ae/article/details/75097004 问题: Error: Cannot find module 'ms'at Function.Module._resolveFilename (module.js:469:15)at Function.Module._load (module.js:417:25)at Module

【NodeJS】如何安装淘宝cnpm

工具官网 Node.js淘宝 NPM 镜像 安装cnpm npm install -g cnpm --registry=https://registry.npm.taobao.org 输入cnpm -v查看是否正常(前提是你已经设置好了环境变量) cnpm -v 如果想给npm添加淘宝镜像,请参考: 【NodeJS】修改npm的registry为淘宝镜像(npm.taobao.o

【NodeJS】Unexpected token (109:0) 返回错误码500

刚开始报错是这样的: Unexpected token call 是什么我没看懂,但我发现 span.label.lable-success 后面的 #[i+1] 写错了,应该是 #{i+1} 改成完这个错误后又是一个错误提示: What? Unexpected token (109:0) 返回错误码500是什么鬼 我先将自己这段源码的 - if ... - else 检查下