websocket----nodejs

运行在浏览器中的WebSocket客户端+使用ws模块搭建的简单服务器

npm init

npm i -D ws

node index.js
//引入websocket模块
const WebSocket = require('ws')

//引用server类并实例化,定义服务器的端口
const wss = new WebSocket.Server({port: 5000 })

wss.on('connection',function(ws){

    ws.on('message',function(message){

        console.log("客户端发送的信息是"+message);

        ws.send('hi,我接受到了你的消息我是服务器')
    })
    
})
 

socket.io

首先需要

npm init 

npm i -D socket.io

npm i express

node app.js

前端引入

常用api

.on('connection', function(socket){ }):与客户端建立连接时监听。

.on('disconnect', function(){ }):与客户端断开连接时监听。

.on('event-name', function(data) { }):监听客户端发来的消息。

.broadcast.emit('event-name', { }):向除自己外的所有其他用户广播消息。

.emit('event-name', { }):仅向当前连接的客户端(自己)推送消息。

服务端
 io.on(‘connection’,function(socket));//监听客户端连接,回调函数会传递本次连接的socket
 
 io.sockets.emit(‘String’,data);//给所有客户端广播消息
 
 io.sockets.socket(socketid).emit(‘String’, data);//给指定的客户端发送消息
 
 socket.on(‘String’,function(data));//监听客户端发送的信息
 
 socket.emit(‘String’, data);//给该socket的客户端发送消息
 

利用socket.io实现的简陋聊天室

websocket----nodejs_第1张图片

 app.html





    
    
    
    Document
    
    
    



    
聊天室

app.js

const express = require('express')
const http = require('http')
const app = express()
const server = http.createServer(app)
const io = require('socket.io')(server)
var userNum = 0 //当前在线人数


// 开启端口监听socket
server.listen(process.env.PORT || 3000, () => console.log('app listening on port 3000'))


io.on('connection', (socket) => {
    userNum++
    console.log('有' + userNum + '用户链接了');
    io.emit('userNum', userNum)

    //接受前端传过来的聊天信息
    socket.on('send',(msg)=>{
        io.emit('send',{
            name:socket.nickName,
            msg:msg
        })
    })

    //当用户进入聊天室
    socket.on('joinName',(userName)=>{
        socket.nickName = userName
       
        io.emit('joinName',{
            userName,
            status:'进入'
        })

        
    })


    socket.on('disconnect', function(){ 
        
        userNum--
        

        io.emit('userNum', userNum)

        

        io.emit('leave',{
            userName:socket.nickName,
            status:'离开'
        })
       

    })
})


app.get('/', (req, res) => {
    res.sendFile(__dirname + '/app.html')
    io.emit('userNum', userNum)
})

你可能感兴趣的:(websocket,网络协议,网络)