博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
聊天功能插件Socket.io
阅读量:7234 次
发布时间:2019-06-29

本文共 2403 字,大约阅读时间需要 8 分钟。

一、Socket.io是什么

  是基于时间的实时双向通讯库

  基于websocket协议的

  前后端通过时间进行双向通讯

  配合express快速开发实时应用

二、Socket.io和ajax区别

  基于不同的网络协议

  ajax基于http协议,单向,实时获取数据只能轮询

  socket.io基于websocket双向通讯协议,后端可以主动推送数据

  现代浏览器均支持websocket协议(不必担心兼容问题)

 

如何安装socket.io

  npm install socket.io --save (后端)

 

      npm install socket.io-client --save(前端)

 

配合express(后端API)(只是顺带说一下不详解)

  *io=require('socket.io')(http)

  *io.on 监听事件

  *io.emit触发事件

  如下代码

.....const app = express()// work with expressconst server = require('http').Server(app)const io = require('socket.io')(server)io.on('connection',function(socket){    console.log('user login')    socket.on('sendmsg',function(data){   //*************接收        console.log(data)        const {
from, to, msg} = data const chatid = [from,to].sort().join('_') Chat.create({chatid,from,to,content:msg},function(err,doc){ io.emit('recvmsg', Object.assign({},doc._doc)) //发送到全局 }) // console.log(data) // io.emit('recvmsg',data) })})....server.listen(9093,function(){ console.log('Node app start at port 9093')})

 

配合express(前端API)

  *Import io from 'socket.io-client'

  *io.on 监听事件

  *io.emit 触发事件

 

前端发送消息

  

import React from 'react'import {List,InputItem,NavBar,Icon, Grid} from 'antd-mobile'import io from 'socket.io-client'const socket = io('ws://localhost:9093') class Chat extends React.Component{        constructor(props){           super(props)           this.state={text:''}        }    componentDidMount(){       socket.on('recvmsg',(data)=>{
      this.setState({
        msg:[...this.state.msg,data.text]       })       }) } handleSubmit(){ socket.emit('sendmsg',{text:this.state.text}) this.setState({text:''}) } render(){
{
              this.state.msg.map(v=>{
                return

{v}

              })              }
{ this.setState({text:v}) }} extra={
this.handleSubmit()}>发送} > 信息
) }}export default Chat

 

转载于:https://www.cnblogs.com/wenbodeboke/p/10019462.html

你可能感兴趣的文章
mysql_use_result & mysql_store_result & MYSQLI_ASYNC
查看>>
进程调度
查看>>
Oracle job调用存储过程
查看>>
Android应用程序与SurfaceFlinger服务之间的共享UI元数据(SharedClient)的创建过程分析 ....
查看>>
kettle转换和作业插件开发及调试
查看>>
基于FPGA的并行计算技术
查看>>
学习笔记 Android.mk 搜索自己主动
查看>>
jquery在元素上收购事件
查看>>
hdu 4884 TIANKENG’s rice shop(模拟)
查看>>
PC-网络教程之宽带小型组网方案
查看>>
java编程接口(5) ------ button和button组
查看>>
ActiveReport开发入门-列表的交互性
查看>>
第一pga 畸形消费分析
查看>>
float、double(浮点数)区别还有和decimal(定点数)的比较
查看>>
IM-即时通讯技术概述
查看>>
Eclipse ADT的Custom debug keystore所需证书规格
查看>>
No package mysql-server available.
查看>>
[ios]sqlite轻量级数据库学习连接
查看>>
东欧视频游戏市场概况
查看>>
它们的定义ListView,实现Item除去滑动和滑出菜单效果
查看>>