天天看點

js ws 狀态_node.js中ws子產品建立服務端和用戶端,網頁WebSocket用戶端

首先下載下傳websocket子產品,指令行輸入

npm install ws

1.node.js中ws子產品建立服務端

// 加載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子產品建立用戶端

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)

skynet websocket example

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");

};