使用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 相关文章推荐
JavaScript For Beginners(转载)
Jan 05 Javascript
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
Apr 12 Javascript
JQuery 学习笔记 选择器之五
Jul 23 Javascript
基于jQuery的倒计时插件代码
May 07 Javascript
JS实现点击图片在当前页面放大并可关闭的漂亮效果
Oct 18 Javascript
jQuery实现瀑布流布局详解(PC和移动端)
Sep 01 Javascript
无需 Flash 使用 jQuery 复制文字到剪贴板
Apr 26 Javascript
解决VUEX刷新的时候出现数据消失
Jul 03 Javascript
Vue cli+mui 区域滚动的实例代码
Jan 25 Javascript
vue中axios的封装问题(简易版拦截,get,post)
Jun 15 Javascript
微信公众平台 客服接口发消息的实现代码(Java接口开发)
Apr 17 Javascript
electron 如何将任意资源打包的方法步骤
Apr 16 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设置编码格式的方法
2013/03/05 PHP
php实现处理输入转义字符的代码
2015/11/08 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
Yii1.1框架实现PHP极光推送消息通知功能
2018/09/06 PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
2020/02/07 PHP
javascript 动态加载 css 方法总结
2009/07/11 Javascript
javascript中不等于的代码是什么怎么写
2013/12/29 Javascript
回车直接实现点击某按钮的效果即触发单击事件
2014/02/27 Javascript
自定义函数实现IE7与IE8不兼容js中trim函数的问题
2015/02/03 Javascript
JS的数组迭代方法
2015/02/05 Javascript
在Node.js中使用HTTP上传文件的方法
2015/06/23 Javascript
详解JavaScript时间格式化
2015/12/23 Javascript
vue.js表格组件开发的实例详解
2016/10/12 Javascript
vue生成随机验证码的示例代码
2017/09/29 Javascript
JavaScript原生实现观察者模式的示例
2017/12/15 Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
2020/07/24 Javascript
从0到1学习JavaScript编写贪吃蛇游戏
2020/07/28 Javascript
[49:35]KG vs SECRET 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
python并发编程之多进程、多线程、异步和协程详解
2016/10/28 Python
对python实现二维函数高次拟合的示例详解
2018/12/29 Python
利用anaconda保证64位和32位的python共存
2021/03/09 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
2020/07/01 Python
HTML5 Canvas绘制五星红旗
2016/05/04 HTML / CSS
介绍一下sql server的安全性
2014/08/10 面试题
介绍一下结构化程序设计方法和面向对象程序设计方法的区别
2012/06/27 面试题
医药专业推荐信
2013/11/15 职场文书
电子信息工程专业推荐信
2014/02/14 职场文书
网页美工求职信
2014/02/15 职场文书
元旦晚会感言
2014/03/12 职场文书
法人委托书范本
2014/04/04 职场文书
学生安全责任书
2014/04/15 职场文书
我们的节日清明节活动总结
2014/04/30 职场文书
白岩松演讲
2014/05/21 职场文书
2015中学政教处工作总结
2015/07/22 职场文书
《将心比心》教学反思
2016/02/23 职场文书
windows server2012 R2下安装PaddleOCR服务的的详细步骤
2022/09/23 Servers