使用socket.io实现简单聊天室案例


Posted in Javascript onJanuary 02, 2018

本文实例为大家分享了socket.io实现简单聊天室的具体代码,供大家参考,具体内容如下

1、客户端【index.html】代码:

<body>
  <h3>socket简例</h3>
  <hr>
  <div id = 'app'>
    <div>
      <div>
        <ul>
          <li v-for = 'item in msgs'>
            {{item.name}}说:{{item.content}}
          </li>
        </ul>
      </div>
      <div>
        <p><input type="text" v-model = 'msg'><button @click = 'm_send()'>发送</button></p>
      </div>
    </div>
  </div>

  <script type="text/javascript" src = 'https://cdn.bootcss.com/vue/2.5.9/vue.min.js'></script>
  <script type="text/javascript" src = 'https://cdn.bootcss.com/socket.io/1.7.3/socket.io.min.js'></script>
  <script type="text/javascript">

    var _vm = new Vue({
      data : {
        name : '用户',
        msg : '',
        msgs : [],
      },
      methods : {
        m_send : function() {

          // 向客户端发送消息
          socket_client.emit('say_client', {
            name : this.name,
            content : this.msg
          }) ;
          this.msg = '' ;
        }
      }
    }).$mount('#app') ;


    // socket服务器
    var socket_client = io.connect('http://127.0.0.1:3000') ; 

    /**
     * 监听服务端发来的消息
     *
     * 1、“say_server”是客户端发出信息时的key值
     * 2、“res”是客户端传来的value值
     */ 
    socket_client.on('say_server' ,function(res){

      console.log('服务端发来的消息为:', res) ;

      _vm.msgs.push(res);
    });

  </script>
</body>

2、服务端【app.js】代码:

const http = require('http') ;
const server = http.createServer() ;

// web服务器
const express = require('express') ;
const app = express();

app.use(express.static(__dirname + '/public'));

app.listen(8888, function () {
  console.log('web服务器成功启动了,IP:127.0.0.1,端口号:8888') ;
});


// socket服务器

const socketio = require('socket.io') ;
const socket_server = socketio(server) ;

// 建立和客户端的socket连接
socket_server.on('connection', function(client) {

// console.log(client) ;          // 查看连接进来的客户端对象内容  
// console.log(Object.keys(client)) ;    // 查看连接进来的客户端对象的关键key值

  /**
   * 监听客户端发来的消息
   *
   * 1、“say_client”是客户端发出信息时的key值
   * 2、“res”是客户端传来的value值
   */ 
  client.on('say_client', function(res) {
    console.log('客户端发来的消息为:', res) ;

    // 向客户端发送消息
    socket_server.emit('say_server', res) ;
  }) ;
}) ;


server.listen(3000, function() {
  console.log('socket服务器成功启动了,IP:127.0.0.1,端口号:3000') ;  
}) ;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery随机切换图片的小例子
Apr 18 Javascript
用jquery方法操作radio使其默认选项是否
Sep 10 Javascript
ie下$.getJSON出现问题的解决方法
Feb 12 Javascript
jquery,js简单实现类似Angular.js双向绑定
Jan 13 Javascript
vuejs指令详解
Feb 07 Javascript
jQuery修改DOM结构_动力节点Java学院整理
Jul 05 jQuery
JavaScript中防止微信浏览器被整体拖动的方法
Aug 25 Javascript
node.js 利用流实现读写同步,边读边写的方法
Sep 11 Javascript
浅谈react-router HashRouter和BrowserRouter的使用
Dec 29 Javascript
详解微信JS-SDK选择图片遇到的坑
Aug 15 Javascript
Async/Await替代Promise的6个理由
Jun 15 Javascript
vue中三级导航的菜单权限控制
Mar 31 Vue.js
使用socket.io制做简易WEB聊天室
Jan 02 #Javascript
AngularJS实现的简单拖拽功能示例
Jan 02 #Javascript
AngularJS实现的锚点楼层跳转功能示例
Jan 02 #Javascript
jQuery实现手机号正则验证输入及自动填充空格功能
Jan 02 #jQuery
Node实战之不同环境下配置文件使用教程
Jan 02 #Javascript
jQuery动态添加元素无法触发绑定事件的解决方法分析
Jan 02 #jQuery
Node解决简单重复问题系列之Excel内容的获取
Jan 02 #Javascript
You might like
PHP4实际应用经验篇(3)
2006/10/09 PHP
PHP采用get获取url汉字出现乱码的解决方法
2014/11/13 PHP
PHP实现防止表单重复提交功能【基于token验证】
2018/05/24 PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
2018/10/12 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
页面右下角弹出提示框示例代码js版
2013/08/02 Javascript
js复制网页内容并兼容各主流浏览器的代码
2013/12/17 Javascript
jQuery实现的一个tab切换效果内部还嵌有切换
2014/08/10 Javascript
jquery mobile页面跳转后样式丢失js失效的解决方法
2014/09/06 Javascript
node.js中的fs.lstatSync方法使用说明
2014/12/16 Javascript
js中this的用法实例分析
2015/01/10 Javascript
使用CamanJS在Web页面上处理图像的技巧
2015/08/18 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
JS读写CSS样式的方法汇总
2016/08/16 Javascript
JavaScript随机生成颜色的方法
2016/10/15 Javascript
原生JavaScript实现的简单放大镜效果示例
2018/02/07 Javascript
jQuery实现表单动态添加数据并提交的方法
2018/07/19 jQuery
vue+echarts实现动态绘制图表及异步加载数据的方法
2018/10/17 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
利用Webpack实现小程序多项目管理的方法
2019/02/25 Javascript
vue项目中自定义video视频控制条的实现代码
2020/04/26 Javascript
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
[04:03]DOTA2英雄梦之声_第02期_风暴之灵
2014/06/30 DOTA
python开发中range()函数用法实例分析
2015/11/12 Python
详解Python多线程Selenium跨浏览器测试
2017/04/01 Python
Python实现针对给定单链表删除指定节点的方法
2018/04/12 Python
python如何制作缩略图
2019/04/30 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
2019/06/28 Python
django 装饰器 检测登录状态操作
2020/07/02 Python
马来西亚网上花店:FlowerAdvisor马来西亚
2020/01/03 全球购物
自动化系在校本科生求职信
2013/10/23 职场文书
干部个人对照检查材料
2014/08/25 职场文书
教师岗位说明书
2015/09/30 职场文书
MySQL 时间类型的选择
2021/06/05 MySQL
Android使用EventBus发送消息,Fragment中接收消息的方法会执行多次
2022/04/24 Java/Android