聊天功能插件Socket.io

一、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 express
const 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(){
               <div>                     {              this.state.msg.map(v=>{                return <p key={v}>{v}</p>              })             }
                         <List>
                               <InputItem
                                       placeholder=‘请输入‘
                                       value={this.state.text}
                                       onChange={v=>{
                                           this.setState({text:v})
                                       }}
                                       extra={<span onClick={()=>this.handleSubmit()}>发送</span>}
                               >
                               信息
                               </InputItem>
                         </List>
                   </div>
        )
    }
}

export default Chat        

原文地址:https://www.cnblogs.com/wenbodeboke/p/10019462.html

时间: 2024-10-09 19:17:59

聊天功能插件Socket.io的相关文章

使用node.js实现多人聊天室(socket.io、B/S)

通过B/S架构实现多人聊天,客户端连接服务器,发送信息,服务器接收信息之后返回给客户端. 主要是通过socket.io实现浏览器和服务器之间进行实时,双向和基于事件的通信. socket.io官方文档:https://socket.io/docs/ 新建一个文件夹作为项目文件夹 新建一个js文件作为服务器,新建一个HTML文件作为客户端. 建立服务器,使用http模块的createSrever快速创建一个服务,监听端口为3000: 1 let http = require("http"

学习socket.io前的网络基础知识准备(白话讲解)

阅读本文章可以解决一下问题: 1 http tcp udp tcp/ip  socket 区别和关系? 2 为什么聊天要用socket.io 基于http不行? 1: 1)tcp/ip tcp/ip 不是协议,而是网络模型 2) TCP和UDP:传输层协议: 3) HTTP:应用层协议:HyperText Transfer Protocal,即:超文本传输协议 基于tcp      本身特点为 请求--->响应 4)SOCKET:TCP/IP网络的API.socket是在应用层和传输层之间的一个

java socket.io结合node.js

用java开发的socket.io,用户node.js作为服务器端,作用就是同步同步,比如开发网站的时候,当用户登录之后,可以实现当前浏览器多个窗口的页面都是登录后的效果. 首先需要安装socket.io,以及所需要的模块, 在项目里引用socket.io的js包, java代码构建socket.io的类,这个类主要参考https://github.com/Gottox/socket.io-java-client. 还需要安装node.js, 在项目文件的位置新建socketserver.js

Native Socket.IO and Android

原文链接地址:http://socket.io/blog/native-socket-io-and-android/ 在本教程中我们将学习如何创建一个聊天客户端用socket . io Node. JS做为聊天服务器,我们的 nativate安卓客户端! 如果你想直接跳转到代码,它在 GitHub. 否则,继续读下去! #介绍 跟随,首先克隆存储库: socket.io-android-chat. 应用程序具有以下特点: 发送消息到所有用户加入到房间. 每个用户加入或者离开时通知. 一个用户开始

node+express+socket.io制作一个聊天室功能

首先是下载包: npm install express npm install socket.io 建立文件: 服务器端代码:server.js 1 var http=require("http"); 2 var express=require("express"); 3 var sio=require("socket.io"); 4 5 var app=express(); 6 app.use(express.static(__dirname+

使用socket.io实现简单的聊天功能

Socket.io实际上是WebSocket的父集,Socket.io封装了WebSocket和轮询等方法 首先得在你的项目中安装socket.io $ npm install socket.io 服务端代码: var app=require('http').createServer() var io=require('socket.io')(app) var PORT =5555; var clientCount=0; app.listen(PORT) io.on('connection',f

nodejs 基于socket.io实现聊天室

由于之后要做的网页视频直播项目要用到socket.io模块,所以特地花时间研究了下,参照网上的代码做了些改进,自己写了个聊天室代码.不得不承认后端事实推送能力有点厉害,这是以前我用php一直苦恼的事情.下面简单介绍下我的项目,顺带讲解下nodejs. 事实上,在看别人写的代码之前,我一直不知道nodejs是干嘛的,直到真正接触到才明白这也可以算作是服务端代码,丰富的第三方库使其功能极其强大.它可以像golang的beego一样直接通过命令行开启服务器,不过要用到express模块.加载模块的方式

[Nodejs]利用Socket.IO配合Express4搭建即时聊天

Socket.IO为WebSockets这个较新的web技术提供了必要的支持,包含客户端与服务端模块,以便建立通信通道,当然也可作为中间件而存在. 1 创建一个express项目 ????????? ????? 防工具盗链抓取[如果显示此文字,代表来自第三方转发] freddon所有 ??? ??????????? 可以使用命令行初始化一个express项目 先安装express npm install express npm install express-generator express 

vue + socket.io实现一个简易聊天室

vue + vuex + elementUi + socket.io实现一个简易的在线聊天室,提高自己在对vue系列在项目中应用的深度.因为学会一个库或者框架容易,但要结合项目使用一个库或框架就不是那么容易了.功能虽然不多,但还是有收获.设计和实现思路较为拙劣,恳请各位大大指正. 可以达到的需求 能查看在线用户列表 能发送和接受消息 使用到的框架和库 socket.io做为实时通讯基础 vuex/vue:客户端Ui层使用 Element-ui:客户端Ui组件 类文件关系图 服务端: 客户端: 服