http协议单向请求,只能客户端向服务器发送消息,然而websocket一旦双方建立连接就可以双方通信,更加深层次的用法是websocket可以做基础,然后不同的客户端可以通过websocket连接可以实现实时通信,同时结合webrtc相关技术可以实现音视频的双向连接。

在此只做简单的websocket连接。

需要安装ws: npm install ws 

 客户端代码:

   index.html:

<html lang="en">
<head>
<meta charset="utf-8">
<meta id="theme-color" name="theme-color" content="#fff">
<base target="_blank">
<title>WebSocket</title>
<link rel="stylesheet" href="main.css">
</head>
<body>
<div id="container">
<button id="connectButton">Connect</button>
<button id="disconnectButton" disabled>Disconnect</button>
<div id="sendText">
<label for="textInput">Send text:</label>
<input id="textInput" type="text" />
</div>
<button id="sendButton" disabled>Send</button>
<div id="output">
<label for="log">Response:</label>
<div id="log" class="log"></div>
</div>
<script src="main.js"></script>
</div>
</body>
</html>
 
main.js:
'use strict';
var ws, serverInput, textInput, log,
connectButton, disconnectButton, sendButton;
serverInput = document.getElementById('serverInput');
textInput = document.getElementById('textInput');
log = document.getElementById('log');
connectButton = document.getElementById('connectButton');
disconnectButton = document.getElementById('disconnectButton');
sendButton = document.getElementById('sendButton');
connectButton.addEventListener('click', clickConnect, false);
disconnectButton.addEventListener('click', clickDisconnect, false);
sendButton.addEventListener('click', clickSend, false);
function clickConnect() {
ws = new WebSocket("ws://127.0.0.1:8888");
ws.onopen = function(evt) {
logMessage('', 'Connected');
connectButton.disabled = true;
disconnectButton.disabled = false;
sendButton.disabled = false;
};
ws.onclose = function(evt) {
logMessage('err', 'Disconnected');
connectButton.disabled = false;
disconnectButton.disabled = true;
sendButton.disabled = true;
};

//客户端接收到服务端返回的信息

ws.onmessage = function(evt) {
logMessage('msg', 'Received: ' + evt.data);
};
ws.onerror = function(evt) {
logMessage('err', 'Error: ' + evt.data);
};
}
function clickDisconnect() {
ws.close();
}
function clickSend() {
logMessage('send', 'Sent: ' + textInput.value);
ws.send(textInput.value);
}
function logMessage(type, msg) {
log.innerHTML += '<p class="' + type + '">' + msg + '</p>';
}
服务端代码
index.js:
const WebSocketServer = require('ws').Server;
const wss = new WebSocketServer({ port: 8888 });
// 一旦与之连接就出发connection事件
wss.on('connection', function (ws) {
console.log("connected");
// 客户端反馈给服务端的信息
ws.on('message', function (message) {
// 服务器给用户反馈会信息
ws.send(message);
console.log(message);
});
})
console.log("websocket server running at ")

node搭建简易的websocket服务的更多相关文章

  1. 使用ruby搭建简易的http服务和sass环境

    使用ruby搭建简易的http服务和sass环境 由于在通常的前端开发情况下,我们会有可能需要一个http服务,当然你可以选择自己写一个node的http服务,也比较简单,比如下面的node代码: v ...

  2. nodejs搭建简单的websocket服务端

    创建websocket服务端使用了nodejs-websocket ,首先要安装nodejs-websocket,在项目的目录下: npm install nodejs-websocket 1.搭建w ...

  3. 【从零开始】用node搭建一个jsonp&json服务

    目录: 一.介绍 二.node安装 三.webstorm配置node环境 四.代码介绍 五.如何使用 六.自定义域名 七.其他 一.介绍 1.背景     日常工作中,跟后端商定好接口格式后:通常采用 ...

  4. nodejs搭建简易的rpc服务

    这里主要使用的是jayson包,使用jayson实现rpc server端十分简单,如下: var jayson = require('jayson') // create a server var ...

  5. go服务端----使用dotweb框架搭建简易服务

    使用dotweb框架搭建简易服务 go语言web框架挺多的,所谓琳琅满目,里面也有很多优秀的,比如echo.beego等,但体验下来,总是觉得哪里有点小疙瘩,后来才明白过来,echo太简单,很多日常使 ...

  6. 使用node搭建服务时,服务可以启动,但是无法访问

    一开始搭建的是没有问题,能够正常启动和访问,然后吃了个饭回来就变成只能启动,浏览器访问不了了. 说真的,这是一个常识问题.使用node搭建服务访问本地文件,服务搭建的没有问题,能够正常启动.但是在浏览 ...

  7. Netty 搭建 WebSocket 服务端

    一.编码器.解码器 ... ... @Autowired private HttpRequestHandler httpRequestHandler; @Autowired private TextW ...

  8. 搭建微信小程序服务

    准备域名和证书 任务时间:20min ~ 40min 小程序后台服务需要通过 HTTPS 访问,在实验开始之前,我们要准备域名和 SSL 证书. 域名注册 如果您还没有域名,可以在腾讯云上选购,过程可 ...

  9. 腾讯云&搭建微信小程序服务

    准备域名和证书 任务时间:20min ~ 40min 小程序后台服务需要通过 HTTPS 访问,在实验开始之前,我们要准备域名和 SSL 证书. 域名注册 如果您还没有域名,可以在腾讯云上选购,过程可 ...

随机推荐

  1. Python——字符串、文件操作,英文词频统计预处理

    一.字符串操作: 解析身份证号:生日.性别.出生地等. 凯撒密码编码与解码 网址观察与批量生成 2.凯撒密码编码与解码 凯撒加密法的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左 ...

  2. mybatis 报The content of elements must consist of well-formed character data or markup. 语法格式错误

    最近在写sql的时候 同时使用到了 >= 和 <= 之前只使用一个的时候 没有什么问题,今天同时使用到了两个,结果xml出现了The content of elements must co ...

  3. java8 stream lambda 一个例子

    import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Pa ...

  4. DevExpress ASP.NET Core Controls 2019发展蓝图(No.4)

    本文主要为大家介绍DevExpress ASP.NET Core Controls 2019年的官方发展蓝图,更多精彩内容欢迎持续收藏关注哦~ [DevExpress ASP.NET Controls ...

  5. Datatables一些常见的JS用法(多与表格有关)

    **********************--倒--序--上--升--(方便新增.更新)*********************** (3)给 动态生成 的 行 内按钮,添加点击事件(多用于分页情 ...

  6. jsp视频如何播放

    网站开发小白们对如何插入视频有较大的困扰,一段时间不知道从何下手,想在数据库里面直接导入,但没能成功,后又尝试直接在myeclipse里面直接放入视频. 对于不同的播放器,视频的格式也有要求,建议使用 ...

  7. selenium中下拉框的定位

    from selenium import webdriverfrom selenium.webdriver.support.select import Selectimport timedriver ...

  8. Traceur

    直接插入网页 <!-- 加载Traceur编译器 --> <script src="http://google.github.io/traceur-compiler/bin ...

  9. Linux:PCBSD系统的安装

    这期继续更新有关Linux系统的安装步骤以及使用,感兴趣的可以来看下!!! 安装PCBSD系统 系统映像文件下载 PCBSD 9.2官方正式版:http://www.veryhuo.com/down/ ...

  10. makefile笔记6 - makefile条件判断

    使用条件判断,可以让 make 根据运行时的不同情况选择不同的执行分支.条件表达式可以是比较变量的值,或是变量和常量的值. 一.示例 下面的例子,判断\(\$\)(CC)变量是否"gcc&q ...