使用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 JSON的反序列化类 using问题的解决方法
Dec 19 Javascript
AngularJS的一些基本样式初窥
Jul 27 Javascript
详述JavaScript实现继承的几种方式(推荐)
Mar 22 Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
Jan 11 Javascript
BootStrap框架中的data-[ ]自定义属性理解(推荐)
Feb 14 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
Feb 16 Javascript
详解vue-router 2.0 常用基础知识点之router.push()
May 10 Javascript
jQuery实现html双向绑定功能示例
Oct 09 jQuery
Angularjs过滤器实现动态搜索与排序功能示例
Dec 13 Javascript
vue父组件向子组件传递多个数据的实例
Mar 01 Javascript
解决vue项目报错webpackJsonp is not defined问题
Mar 14 Javascript
vue quill editor 使用富文本添加上传音频功能
Jan 14 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
Apache 配置详解(最好的APACHE配置教程)
2010/07/04 PHP
php实现用于删除整个目录的递归函数
2015/03/16 PHP
PHP开发Apache服务器配置
2015/07/15 PHP
ThinkPHP中where()使用方法详解
2016/04/19 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
JavaScript实现仿网易通行证表单验证
2015/05/25 Javascript
Javascript中的作用域和上下文深入理解
2015/07/03 Javascript
JavaScript判断表单中多选框checkbox选中个数的方法
2015/08/17 Javascript
jquery实现可旋转可拖拽的文字效果代码
2016/01/27 Javascript
js小数计算小数点后显示多位小数的实现方法
2016/05/30 Javascript
js创建对象几种方式的优缺点对比
2016/09/28 Javascript
AngularJS ui-router (嵌套路由)实例
2017/03/10 Javascript
template.js前端模板引擎使用详解
2017/10/10 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
详解用Webpack与Babel配置ES6开发环境
2019/03/12 Javascript
[18:16]sakonoko 2017年卡尔集锦
2018/02/06 DOTA
[01:07:46]完美世界DOTA2联赛循环赛 Magma vs IO BO2第二场 11.01
2020/11/02 DOTA
python装饰器使用方法实例
2013/11/21 Python
Python输出9*9乘法表的方法
2015/05/25 Python
Python中不同进制的语法及转换方法分析
2016/07/27 Python
开源Web应用框架Django图文教程
2017/03/09 Python
python的变量与赋值详细分析
2017/11/08 Python
python去除扩展名的实例讲解
2018/04/23 Python
python os用法总结
2018/06/08 Python
python函数与方法的区别总结
2019/06/23 Python
Python的Lambda函数用法详解
2019/09/03 Python
美国标志性加大尺码时装品牌:Ashley Stewart
2016/12/15 全球购物
美国杰西潘尼官网:JCPenney
2019/06/12 全球购物
String是最基本的数据类型吗?
2013/06/13 面试题
手术室护士自我鉴定
2013/10/14 职场文书
通息工程毕业生自荐信
2013/10/16 职场文书
美国留学经济担保书
2014/05/20 职场文书
常务副县长“四风”个人对照检查材料思想汇报
2014/10/02 职场文书
2014年文艺部工作总结
2014/11/17 职场文书
公司借款担保书
2015/09/22 职场文书
外出培训学习心得体会
2016/01/18 职场文书