使用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 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
Apr 26 Javascript
DEDECMS如何为文章添加HOT NEW标志图片
Aug 14 Javascript
JS实现动态生成表格并提交表格数据向后端
Nov 25 Javascript
JS实现鼠标移上去显示图片或微信二维码
Dec 14 Javascript
基于jQuery实现选项卡效果
Jan 04 Javascript
jQuery Validate 数组 全部验证问题
Jan 12 Javascript
微信小程序 实现列表项滑动显示删除按钮的功能
Apr 13 Javascript
关于ES6箭头函数中的this问题
Feb 27 Javascript
详解Element 指令clickoutside源码分析
Feb 15 Javascript
jquery简易手风琴插件的封装
Oct 13 jQuery
微信小程序实现锚点跳转
Nov 23 Javascript
js面向对象方式实现拖拽效果
Mar 03 Javascript
使用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
如何把PHP转成EXE文件
2006/10/09 PHP
PHP下常用正则表达式整理
2010/10/26 PHP
深入理解require与require_once与include以及include_once的区别
2013/06/05 PHP
使用swoole扩展php websocket示例
2014/02/13 PHP
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
2011/03/17 Javascript
简单实用jquery版三级联动select示例
2013/07/04 Javascript
JavaScript的继承的封装介绍
2013/10/15 Javascript
当鼠标移动时出现特效的JQuery代码
2013/11/08 Javascript
关于js中for in的缺陷浅析
2013/12/02 Javascript
JavaScript中property和attribute的区别详细介绍
2015/03/03 Javascript
Bootstrap基本插件学习笔记之Tooltip提示工具(18)
2016/12/08 Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
2017/07/16 Javascript
vue router嵌套路由在history模式下刷新无法渲染页面问题的解决方法
2018/01/25 Javascript
Vuex实现计数器以及列表展示效果
2018/03/10 Javascript
node实现爬虫的几种简易方式
2019/08/22 Javascript
微信小程序转发事件实现解析
2019/10/22 Javascript
JavaScript实现拖拽盒子效果
2020/02/06 Javascript
对python中for、if、while的区别与比较方法
2018/06/25 Python
python函数的万能参数传参详解
2019/07/26 Python
Django CBV类的用法详解
2019/07/26 Python
python获取Pandas列名的几种方法
2019/08/07 Python
keras 自定义loss model.add_loss的使用详解
2020/06/22 Python
利用python对excel中一列的时间数据更改格式操作
2020/07/14 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
详解前端HTML5几种存储方式的总结
2016/12/27 HTML / CSS
英国第一蛋白粉品牌:Myprotein
2016/09/14 全球购物
理肤泉美国官网:La Roche-Posay
2018/01/17 全球购物
英国和爱尔兰的自炊式豪华度假小屋:Rural Retreats
2018/06/08 全球购物
奥地利手表、香水、化妆品和珠宝购物网站:Brasty.at
2021/01/17 全球购物
优秀辅导员事迹材料
2014/02/16 职场文书
医学生自我鉴定范文
2014/03/26 职场文书
企业党员公开承诺书
2014/03/26 职场文书
土地转让协议书范本
2014/04/15 职场文书
幼儿园个人师德总结
2015/02/06 职场文书
内勤岗位职责范本
2015/04/13 职场文书
2015年幼儿园大班工作总结
2015/04/25 职场文书