首页 > 技术文章 > nodeJS+socket.io传递消息

hibiscus-ben 2019-05-08 16:35 原文

服务器端

安装express,socket.io

npm install express --save-dev
npm install socket.io --save

app.js

const express = require('express');
const app = express();
var server = require('http').createServer(app).listen(8083);
var io = require('socket.io')(server);

io.on('connection', function(socket) {   
    
    // 想客户端传递消息
    socket.emit('news',{hello:'hello'}) 
    
    // 接收并处理客户端的hi事件
    socket.on('start', function(data) {
        // ....
    })
    // 断开事件
    socket.on('disconnect', function(data) {
        console.log('断开通话');
        //socket.emit('c_leave','离开');
        //socket.broadcast用于向整个网络广播(除自己之外)
        //socket.broadcast.emit('c_leave','某某人离开了')
    })
    
});

客户端

安装socket.io。

注意:这里不能npm install socket.io。这个是服务器端的插件应用。不是客户端。

直接在index.html中引入socke.io。

这样就可以用io这个变量了

<script src="https://cdn.bootcss.com/socket.io/2.2.0/socket.io.dev.js"></script>
$('#submit').click(function(){
    var socket = io.connect('http://localhost:8080');     
    socket.on('news', function (data) {    
        alert(data.hello);
    });
    socket.emit('start',1)  

    // 可以用close()断开连接。服务器端disconnect会监听到
    socket.close();
})

相关文档api

https://github.com/socketio/socket.io-client/blob/master/docs/API.md

推荐阅读