使用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对象之内置对象Math使用方法
Apr 16 Javascript
js 创建快捷方式的代码(fso)
Nov 19 Javascript
JS判断当前日期是否大于某个日期的实现代码
Sep 02 Javascript
多个js与css文件的合并方法详细说明
Dec 26 Javascript
完美解决AJAX跨域问题
Nov 01 Javascript
node.js操作mysql(增删改查)
Jul 24 Javascript
理解javascript异步编程
Jan 27 Javascript
Radio 单选JS动态添加的选项onchange事件无效的解决方法
Dec 12 Javascript
Bootstrap table使用方法总结
May 10 Javascript
基于EasyUI的基础之上实现树形功能菜单
Jun 28 Javascript
js学习总结之dom2级事件基础知识详解
Jul 27 Javascript
swiper 自动图片无限轮播实现代码
May 21 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中的cookie
2006/11/26 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
2016/05/18 PHP
PHP实现的曲线统计图表示例
2016/11/10 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
PHP封装请求类实例分析【基于Yii框架】
2019/10/17 PHP
JS 分号引起的一段调试问题
2009/06/18 Javascript
NodeJS 模块开发及发布详解分享
2012/03/07 NodeJs
JS按字节截取字符长度实例
2013/11/20 Javascript
JavaScript动态改变HTML页面元素例如添加或删除
2014/08/10 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
用Node.js通过sitemap.xml批量抓取美女图片
2015/05/28 Javascript
vue.js入门教程之计算属性
2016/09/01 Javascript
CSS3 media queries结合jQuery实现响应式导航
2016/09/30 Javascript
Nodejs基于LRU算法实现的缓存处理操作示例
2017/03/17 NodeJs
微信小程序 MinUI组件库系列之badge徽章组件示例
2018/08/20 Javascript
微信小程序使用template标签实现五星评分功能
2018/11/03 Javascript
jQuery选择器之层次选择器用法实例分析
2019/02/19 jQuery
vue中使用mxgraph的方法实例代码详解
2019/05/17 Javascript
微信小程序实现时间进度条功能
2020/11/17 Javascript
[56:46]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VP vs Effect
2018/04/01 DOTA
python获取当前日期和时间的方法
2015/04/30 Python
Python中字符串的常见操作技巧总结
2016/07/28 Python
python删除服务器文件代码示例
2018/02/09 Python
python flask框架实现重定向功能示例
2019/07/02 Python
Django ModelForm组件使用方法详解
2019/07/23 Python
在css3中background-clip属性与background-origin属性的用法介绍
2012/11/13 HTML / CSS
CSS3的一个简单导航栏实现
2015/08/03 HTML / CSS
详解Html5中video标签那些属性和方法
2019/07/01 HTML / CSS
新加坡第一大健康与美容零售商:屈臣氏新加坡(Watsons Singapore)
2020/12/11 全球购物
介绍一下javax.servlet.Servlet接口及其主要方法
2015/11/30 面试题
统计员岗位职责
2013/11/14 职场文书
十佳教师事迹材料
2014/01/11 职场文书
篮球比赛口号
2014/06/10 职场文书
2014年幼儿园安全工作总结
2014/11/10 职场文书
Python使用UDP实现720p视频传输的操作
2021/04/24 Python
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL