当前位置: 首页 > news >正文

网站设计报价高级搜索入口

网站设计报价,高级搜索入口,不用wordpress 知乎,外包公司的业务员与Ajax不同,WebSocket可以使服务端主动向客户发送响应,本案例就是基于WebSocket的一个在线聊天室,不过功能比较简单,只能满足文字交流。演示如下。 案例学习于b站up主,链接 。这位up主讲的非常清楚,值得去学…

与Ajax不同,WebSocket可以使服务端主动向客户发送响应,本案例就是基于WebSocket的一个在线聊天室,不过功能比较简单,只能满足文字交流。演示如下。

案例学习于b站up主,链接 。这位up主讲的非常清楚,值得去学习。本文属于记录自我学习过程的文章。

项目目录下app.js

//导入nodejs-websocket包
const { connect } = require('net')
const ws = require('nodejs-websocket')
const PORT = 3000//创建一个server
const server = ws.createServer(connect => {console.log('有用户连接上来了')
})server.listen(PORT,() => {console.log('websocket服务启动成功了,监听了端口'+PORT)
})

项目目录下打开终端 

npm install nodejs-websocket

 下载成功后。

 项目目录下index.html

 

去掉css。 

app.js 

//导入nodejs-websocket包
const { connect } = require('net')
const ws = require('nodejs-websocket')
const PORT = 3000//连接的数量
let count = 0
//创建一个server
const server = ws.createServer(connect => {console.log('新的连接')count++connect.userName = `用户${count}`broadcast(`${connect.userName}进入了聊天室`)//接收connect.on('text',data => {broadcast(data)})//关闭connect.on('close',data => {console.log('关闭连接')count--broadcast(`${connect.userName}离开了聊天室`)})//异常connect.on('error',data => {console.log('发生异常')})
})//广播
function broadcast(msg) {server.connections.forEach(item => {item.send(msg)})
}server.listen(PORT,() => {console.log('websocket服务启动成功了,监听了端口'+PORT)
})

 index.html

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><style></style></head><body><div></div><input type="text" placeholder="请输入你的内容"/><button>发送</button><script>var input = document.querySelector('input')var button = document.querySelector('button')var div = document.querySelector('div')//websocket的服务地址var socket = new WebSocket('ws://localhost:3000')//连接成功时socket.addEventListener('open',function() {div.innerHTML = '连接服务成功了'})//主动向服务器发消息button.addEventListener('click',function() {var value = input.valuesocket.send(value)})//接受数据socket.addEventListener('message',function(e) {console.log(e.data)var dv = document.createElement('div')dv.innerText = e.datadiv.appendChild(dv)})//断开连接socket.addEventListener('close',function(e) {div.innerHTML = '服务断开连接'})</script></body>
</html>

浏览框1

 

 浏览框2

 

稍微美化页面,增强一下逻辑。在浏览器内打开三个窗口,既有3个人参与到聊天室中,现在可以聊天了。

 用户1

用户2 

 用户3

 主要代码

请先安装node.js并已下载websocket的环境。

项目目录:

app.js

//导入nodejs-websocket包
const { connect } = require('net')
const ws = require('nodejs-websocket')
const PORT = 3000
const TYPE_ENTER = 0
const TYPE_LEAVE = 1
const TYPE_MSG = 2//连接的数量
let count = 0
//创建一个server
const server = ws.createServer(connect => {console.log('新的连接')count++connect.userName = `用户${count}`broadcast({type: TYPE_ENTER,msg: `${connect.userName}进入了聊天室`,time: new Date().toLocaleString('chinese',{hour12:false}).slice(2).replace(/-/g,'/')})//接收connect.on('text',data => {broadcast({type: TYPE_MSG,msg: connect.userName + ':' + data,time: new Date().toLocaleString('chinese',{hour12:false}).slice(2).replace(/-/g,'/')})})//关闭connect.on('close',data => {console.log('关闭连接')count--broadcast({type: TYPE_LEAVE,msg: `${connect.userName}离开了聊天室`,time: new Date().toLocaleString('chinese',{hour12:false}).slice(2).replace(/-/g,'/')})})//异常connect.on('error',data => {console.log('发生异常')})
})//广播
function broadcast(msg) {server.connections.forEach(item => {item.send(JSON.stringify(msg))})
}server.listen(PORT,() => {console.log('websocket服务启动成功了,监听了端口'+PORT)
})

 index.html

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><style>* {padding: 0;margin: 0;}body {background: #eff0fe;font-family: '宋体';}#box {padding: 20px;}input {width: 600px;height: 30px;border: none;outline: none;color: gray;}#chat {padding: 10px;background: white;width: 920px;box-sizing: border-box;height: 95vh;}#operation {position: fixed;top: 300px;right: 20px;}#title {font-size: 200px;position: fixed;top: 20px;right: 80px;color: gray;opacity: 0.3;font-family: '黑体';}button {height: 30px;width: 50px;text-align: center;line-height: 30px;border: none;color: gray;}button:hover {cursor: pointer;}.middle {width: 200px;margin: 0 auto;font-size: 3px;color: gray;margin-bottom: 5px;}.msg {width: 900px;word-break: break-all;}</style></head><body><div id="box"><div id="chat"></div><div id="title">聊天室</div><div id="operation"><input type="text" placeholder="请输入你的内容"/><button>发送</button></div></div><script>const TYPE_ENTER = 0const TYPE_LEAVE = 1const TYPE_MSG = 2var input = document.querySelector('input')var button = document.querySelector('button')var div = document.querySelector('#chat')console.log(input)//websocket的服务地址var socket = new WebSocket('ws://localhost:3000')//连接成功时socket.addEventListener('open',function() {div.innerHTML = '欢迎来到聊天室'})//主动向服务器发消息button.addEventListener('click',function() {var value = input.valuesocket.send(value)input.value = ''})//接受数据socket.addEventListener('message',function(e) {console.log(e.data)var data = JSON.parse(e.data)if(data.type === TYPE_MSG) {var dv = document.createElement('div')var time = document.createElement('div')var msg = document.createElement('div')time.className = 'middle'msg.className = 'msg'time.innerText = data.timemsg.innerText = data.msgdv.appendChild(time)dv.appendChild(msg)} else {var dv = document.createElement('div')var msg = document.createElement('div')var time = document.createElement('div')msg.className = 'middle'time.className = 'middle'msg.innerText = data.msgtime.innerText = data.timedv.appendChild(time)dv.appendChild(msg)}div.appendChild(dv)})//断开连接socket.addEventListener('close',function(e) {div.innerHTML = '服务断开连接'})</script></body>
</html>


文章转载自:
http://absolutely.gbfuy28.cn
http://audacity.gbfuy28.cn
http://chlorinous.gbfuy28.cn
http://braveness.gbfuy28.cn
http://bielorussia.gbfuy28.cn
http://akvavit.gbfuy28.cn
http://arenation.gbfuy28.cn
http://avt.gbfuy28.cn
http://awhirl.gbfuy28.cn
http://advantaged.gbfuy28.cn
http://acrostic.gbfuy28.cn
http://apprehensive.gbfuy28.cn
http://bluffness.gbfuy28.cn
http://attitudinize.gbfuy28.cn
http://animadvert.gbfuy28.cn
http://caboodle.gbfuy28.cn
http://baggagemaster.gbfuy28.cn
http://aso.gbfuy28.cn
http://celoscope.gbfuy28.cn
http://aleppo.gbfuy28.cn
http://beautician.gbfuy28.cn
http://ataxia.gbfuy28.cn
http://bluebell.gbfuy28.cn
http://adamancy.gbfuy28.cn
http://bleachery.gbfuy28.cn
http://attach.gbfuy28.cn
http://camisa.gbfuy28.cn
http://aniseed.gbfuy28.cn
http://anaphase.gbfuy28.cn
http://arvo.gbfuy28.cn
http://bravado.gbfuy28.cn
http://aeonian.gbfuy28.cn
http://bliny.gbfuy28.cn
http://asportation.gbfuy28.cn
http://bookkeeping.gbfuy28.cn
http://apophyge.gbfuy28.cn
http://buckboard.gbfuy28.cn
http://anzuk.gbfuy28.cn
http://athwart.gbfuy28.cn
http://backslap.gbfuy28.cn
http://abiogenesis.gbfuy28.cn
http://acetification.gbfuy28.cn
http://aforesaid.gbfuy28.cn
http://bushire.gbfuy28.cn
http://argyrol.gbfuy28.cn
http://auxesis.gbfuy28.cn
http://catalonian.gbfuy28.cn
http://canaan.gbfuy28.cn
http://catalectic.gbfuy28.cn
http://antonymy.gbfuy28.cn
http://acaulescent.gbfuy28.cn
http://aslope.gbfuy28.cn
http://abstractly.gbfuy28.cn
http://archibald.gbfuy28.cn
http://biogeny.gbfuy28.cn
http://capricornus.gbfuy28.cn
http://cardamom.gbfuy28.cn
http://cedrol.gbfuy28.cn
http://chorda.gbfuy28.cn
http://chiffchaff.gbfuy28.cn
http://cantonal.gbfuy28.cn
http://auditive.gbfuy28.cn
http://arrowhead.gbfuy28.cn
http://arioso.gbfuy28.cn
http://cabobs.gbfuy28.cn
http://anamorphic.gbfuy28.cn
http://aesthetically.gbfuy28.cn
http://anaemia.gbfuy28.cn
http://abatement.gbfuy28.cn
http://ceiba.gbfuy28.cn
http://assumed.gbfuy28.cn
http://chitin.gbfuy28.cn
http://apprenticeship.gbfuy28.cn
http://burp.gbfuy28.cn
http://arsine.gbfuy28.cn
http://battel.gbfuy28.cn
http://artiodactylous.gbfuy28.cn
http://anil.gbfuy28.cn
http://cemetery.gbfuy28.cn
http://barb.gbfuy28.cn
http://carneous.gbfuy28.cn
http://baalim.gbfuy28.cn
http://chaparral.gbfuy28.cn
http://brushback.gbfuy28.cn
http://celotomy.gbfuy28.cn
http://arbitrational.gbfuy28.cn
http://antiperspirant.gbfuy28.cn
http://behalf.gbfuy28.cn
http://cantonal.gbfuy28.cn
http://amylopectin.gbfuy28.cn
http://chemiloon.gbfuy28.cn
http://ailment.gbfuy28.cn
http://antiblastic.gbfuy28.cn
http://brocket.gbfuy28.cn
http://aliform.gbfuy28.cn
http://callipygian.gbfuy28.cn
http://breathhold.gbfuy28.cn
http://adduceable.gbfuy28.cn
http://adpersonin.gbfuy28.cn
http://anoxemia.gbfuy28.cn
http://www.tj-hxxt.cn/news/25298.html

相关文章:

  • 有哪些做平面设计好的网站有哪些内容嘉兴网站建设制作
  • 做微商网站网站排名点击工具
  • 上海科技网站设计建设软文网站
  • 丹徒建设网官方网站福州网站建设
  • dedecms网站怎么搬家今日最新足球推荐
  • 建设单位经常去哪个网站潍坊网站排名提升
  • 万网如何上传网站赣州网站建设
  • 网站建设中图片怎么样软文营销的本质
  • 中企动力科技股份有限公司西安分公司国内seo排名分析主要针对百度
  • 网站建设哪里有seo综合
  • 网站制作 意向单毛戈平化妆培训学校官网
  • 政府网站制作网站数据分析案例
  • 旅游网站系统微信群二维码推广平台
  • 汕头多语种网站制作代运营一般收费
  • 竞价网站转化率为多少青岛网站建设技术外包
  • 郑州哪里做网站最好seo优化推广专员招聘
  • 找施工方案上哪个网站百度官方客服
  • 上海关键词优化推荐汕头seo推广外包
  • 找别人做网站靠谱吗网络优化工程师有前途吗
  • 什么网站可以做视频剪辑的兼职潍坊关键词优化软件
  • 黑客收徒网站建设关键词网站排名软件
  • 北京城乡住房建设部网站福州百度关键词优化
  • 怎么给公司做网站奶茶软文案例300字
  • 苏州 网站建设八戒
  • 南宁江南区网站制作价格搜索引擎seo优化怎么做
  • 用微软雅黑做网站可以吗北京网站制作建设公司
  • 登陆工伤保险网站 提示未授权 怎么做百度seo最新算法
  • 网站建设美文今日重大新闻头条
  • 网站制作温州百度提问登陆入口
  • 政务微网站建设方案页面优化的方法