• 技术文章 >web前端 >前端问答

    ws是nodejs的内置模块吗

    青灯夜游青灯夜游2021-12-31 12:03:49原创432

    ws不是nodejs的内置模块。ws是nodejs的一个WebSocket库,可以用来创建服务,需要通过“npm install ws”命令进行安装后才可使用,因此不是nodejs内置的模块。

    本教程操作环境:windows7系统、nodejs 12.19.0版,DELL G3电脑。

    ws不是nodejs的内置模块。

    ws:是nodejs的一个WebSocket库,可以用来创建服务。 https://github.com/websockets/ws

    nodejs使用ws模块

    首先下载websocket模块,命令行输入

    npm install ws

    1.node.js中ws模块创建服务端(ser.js)

    // 加载node上websocket模块 ws;
    var ws = require("ws");
    
    // 启动基于websocket的服务器,监听我们的客户端接入进来。
    var server = new ws.Server({
    	host: "127.0.0.1",
    	port: 6080,
    });
    
    // 监听接入进来的客户端事件
    function websocket_add_listener(client_sock) {
    	// close事件
    	client_sock.on("close", function() {
    		console.log("client close");
    	});
    
    	// error事件
    	client_sock.on("error", function(err) {
    		console.log("client error", err);
    	});
    	// end 
    
    	// message 事件, data已经是根据websocket协议解码开来的原始数据;
    	// websocket底层有数据包的封包协议,所以,绝对不会出现粘包的情况。
    	// 每解一个数据包,就会触发一个message事件;
    	// 不会出现粘包的情况,send一次,就会把send的数据独立封包。
    	// 如果我们是直接基于TCP,我们要自己实现类似于websocket封包协议就可以完全达到一样的效果;
    	client_sock.on("message", function(data) {
    		console.log(data);
    		client_sock.send("Thank you!");
    	});
    	// end 
    }
    
    // connection 事件, 有客户端接入进来;
    function on_server_client_comming (client_sock) {
    	console.log("client comming");
    	websocket_add_listener(client_sock);
    }
    
    server.on("connection", on_server_client_comming);
    
    // error事件,表示的我们监听错误;
    function on_server_listen_error(err) {
    
    }
    server.on("error", on_server_listen_error);
    
    // headers事件, 回给客户端的字符。
    function on_server_headers(data) {
    	// console.log(data);
    }
    server.on("headers", on_server_headers);

    2.node.js中ws模块创建客户端(client.js)

    var ws = require("ws");
    
    // url ws://127.0.0.1:6080
    // 创建了一个客户端的socket,然后让这个客户端去连接服务器的socket
    var sock = new ws("ws://127.0.0.1:6080");
    sock.on("open", function () {
    	console.log("connect success !!!!");
    	sock.send("HelloWorld1");
    	sock.send("HelloWorld2");
    	sock.send("HelloWorld3");
    	sock.send("HelloWorld4");
    	sock.send(Buffer.alloc(10));
    });
    
    sock.on("error", function(err) {
    	console.log("error: ", err);
    });
    
    sock.on("close", function() {
    	console.log("close");
    });
    
    sock.on("message", function(data) {
    	console.log(data);
    });

    3.网页客户端创建(使用WebApi --->WebSocket) index.html

    <!DOCTYPE html>
    <html>
    <head>
    	<title>websocket example</title>
    </head>
    <body>
    	<script>
    	var ws = new WebSocket("ws://127.0.0.1:6080/index.html");
    	
    	ws.onopen = function(){
    		alert("open");
    		ws.send("WebSocket  hellowrold!!");
    	};
    	ws.onmessage = function(ev){
    		alert(ev.data);
    	};
    	ws.onclose = function(ev){
    		alert("close");
    	};
    	ws.onerror = function(ev){
    		console.log(ev);
    		alert("error");
    	};
    	</script>
    </body>
    </html>

    更多node相关知识,请访问:nodejs 教程!!

    以上就是ws是nodejs的内置模块吗的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:ws nodejs 内置模块
    上一篇:html5中size的用法是什么 下一篇:nodejs读取文件和写文件的方法是什么
    Web大前端开发直播班

    相关文章推荐

    • 快速了解node16+如何配置对应的sass环境• 一文聊聊Node.js中的EventEmitter模块• 聊聊Node.js中如何实现Stream流(可读、可写、双工和转换流)• Node.js学习之聊聊Events模块• 手把手教你玩转Node中的集群
    1/1

    PHP中文网