socket实现聊天功能(二)

WebSocket协议是建立在HTTP协议之上,因此创建websocket服务时需要调用http模块的createServer方法。将生成的server作为参数传入
socket.io的方法中。如下代码:

var express = require(‘express‘);
var app = express();
var server = require(‘http‘).createServer(app);
var io = require(‘socket.io‘)(server);
var port = process.env.PORT || 7777;

服务端对应的事件:

1. io.on(‘connection‘)
该事件的含义是监听客户端和服务器端成功建立连接,它有一个回调函数,该回调函数接收一个socket参数,如下代码:

io.on(‘connection‘, function(socket){

});

2. io.emit(EventName, param);
该方法用于向服务器发送消息,第一个参数是发送消息的名字,第二个参数是需要传递的数据参数。
比如:

io.emit(‘user connect‘, data);

客户端有socket对象,因此可以通过 socket.on(‘user connect‘, data); 来监听服务器使用 io.emit(‘user connect‘, data)发来的消息。
如下代码:

socket.on(‘user connect‘, (data) => {
  // 做一些事情
});

3. socket.on(EventName, callback)

服务器端也有socket.on()方法,该方法用于监听客户端通过 socket.emit(EventName)发送来的消息。如下客户端的消息如下:

socket.emit(‘client message‘, {
  text: msg,
  time: new Date()
}, () => {
  console.log(‘发送成功‘);
});

服务端可以使用如下监听客户端:

// 监听发送的消息
socket.on(‘client message‘, (data) => {
  console.log(data);
});

4. socket.broadcast.emit();

该方法表示向除了自己以外的客户端发送消息。如下代码:

// 广播给除自己以外的客户端
socket.broadcast.emit(‘server message‘, data);

客户端可以通过如下方法获取到对应的消息;
// 接收消息
socket.on(‘server message‘, (data) => {
  console.log(data);
});

5. socket.on(‘disconnect‘), 表示客户端和服务端断开链接。
如下代码:

// 监听用户离开
socket.on(‘disconnect‘, () => {
  // 通知用户离开
  io.emit(‘user disconnect‘, user);
});

客户端通过下面的代码监听到信息,如下:
// 监听用户离开聊天室
socket.on(‘user disconnect‘, (user) => {
  console.log(user);
});

下面我们来简单的来看一个聊天的demo案列:
首先看一个项目的目录结构如下:

### 目录结构如下:
  demo                    # 工程名
  |   |--- client
  |   | |--- bootstrap    # bootstrap中的css和js文件夹
  |   | |--- index.css    # css样式
  |   | |--- index.js     # 客户端的js
  |   | |--- index.html
  |   | |--- server.js    # 服务端的js
  |   |
  |   |--- .gitignore
  |   |--- README.md
  |   |--- package.json

1. 首先我们每一个用户需要登录,因此当我们运行 node.server.js的时候,我们会看到一个登录页面,登录成功后,会记录用户名;
如下图所示:

2. 登录成功后,会显示 某某进入聊天室的文案信息,右边有哪些用户在线,及底部可以发送消息和发送图片按钮,如下图所示

3. 当进入如下三个用户的时候,三个人分别发送消息,自己发送的消息在右边,别人发送的消息在左边;且当前的用户在用户列表使用红色高亮
显示,使我们可以看得更清楚点;如下图所示:

4. 可以发送图片,如下,

5. 也可以点击图片,弹窗大图,如下所示

6, 还可以对单个的用户发送简单的消息,如下图所示:

用户可以接收到消息;如下图所示:

github上的源码

原文地址:https://www.cnblogs.com/tugenhua0707/p/8922515.html

时间: 2024-07-29 14:37:11

socket实现聊天功能(二)的相关文章

使用socket实现聊天功能

public class Service { //服务器 public static void main(String[] args) { ServerSocket serverSocket=null; Socket socket=null; //既然是 双方的通信 输入和输出流 必须有 OutputStream os=null; InputStream is=null; BufferedReader br=null; byte [] buf=new byte[1024]; int say; S

Socket 实现聊天功能

注:本文来自:简书:jianshu 作者:jijs链接:http://www.jianshu.com/p/7c0722a8b66f來源:简书著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 需要提前了解知识点java.net.Socket 解析java.net.ServerSocket 解析 使用socket实现一个端对端聊天系统. 消息的格式为:消息长度(int)+消息内容 通过消息长度来进行socket分包,防止读取出现半包.粘包等问题. 服务端代码 1 import j

我们一起学习WCF 第九篇聊天功能

说到聊天,那么其实就是传输数据,把自己写的东西传给自己想发送的那么人.我总结一下传输有三种方式 1:就是我们常见的数据库传输 2:就是文件(流)传输 3:就是socket传输 今天我们说的wcf实现聊天其实是基于socket的聊天功能(QQ聊天发展到今天肯定是很牛的了,但是最初肯定也是这样的思想) 今天我先说说基于WCF聊天的原理 1:需要一个回调函数(当用户发送的时候会吧信息回调给客户端本身) 2:需要一个委托(把服务器传来的信息显示给前台) 3:需要一个触发点击事件(目的是为了触发把发送信息

[Asp.net 开发系列之SignalR篇]专题二:使用SignalR实现酷炫端对端聊天功能

一.引言 在前一篇文章已经详细介绍了SignalR了,并且简单介绍它在Asp.net MVC 和WPF中的应用.在上篇博文介绍的都是群发消息的实现,然而,对于SignalR是为了实时聊天而生的,自然少了不像QQ一样的端对端的聊天了.本篇博文将介绍如何使用SignalR来实现类似QQ聊天的功能. 二.使用SignalR实现端对端聊天的思路 在介绍具体实现之前,我先来介绍了使用SignalR实现端对端聊天的思路.相信大家在前篇文章已经看到过Clients.All.sendMessage(name,

Socket编程一实现简易的聊天功能以及文件传输

干程序是一件枯燥重复的事,每当感到内心浮躁的时候,我就会找小说来看.我从小就喜爱看武侠小说,一直有着武侠梦.从金庸,古龙,梁羽生系列到凤歌(昆仑),孙晓(英雄志)以及萧鼎的(诛仙)让我领略着不一样的江湖. 如果你有好看的武侠系列小说,给我留言哦.题外话就扯这么多了,接着还是上技术. 看看今天实现的功能效果图: 可以这里使用多台手机进行通讯,[凤歌]我采用的服务器发送消息. 是不是只有发送消息,有些显得太单调了.好,在发送消息的基础上增加文件传输.后期会增加视频,音频的传输,增加表情包.那一起来看

socket.io+angular.js+express.js做个聊天应用(二)

接着上一篇 我用的开发工具是sublime 打开之前创建的工程. 打开www 修改并添加代码 #!/usr/bin/env node var debug = require('debug')('my-application'); var app = require('../app'); var io=require("socket.io").listen(app.listen(app.get('port'))); app.set('port', process.env.PORT ||

Socket.IO聊天室

小编心语:大家过完圣诞准备迎元旦吧~小编在这里预祝大家元旦快乐!!这一次要分享的东西小编也不是很懂啊,总之小编把它拿出来是觉地比较稀奇,而且程序也没有那么难,是一个比较简单的程序,大家可以多多试试~ Socket.IO聊天室 简介:Socket.IO实现了实时双向的基于事件的通讯机制.旨在让各种浏览器与移动设备上实现实时app功能,模糊化各种传输机制.下面我们使用Node.js和Socket.IO来做一个简单的聊天室.一.初始化项目 (这个是在实验楼网站的虚拟平台需要实现的~可自动略过这一环节,

linux下基于socket的聊天软件

近期学习linux socket编程.看看unp那本书.顺便写了个类似最简单聊天功能的软件.界面是用qt写的.写下来总结总结吧,假设有问题.欢迎大家和我交流. 模式是C/S模式,server端等待请求.client发送后建立请求.连接用的是tcp不是udp,事实上udp实现更为简单. 一. 环境搭建 我用docker搭了几个虚拟机,详细搭建方式能够參考网上的或我之前写docker的总结:点击打开链接 docker还是非常轻量级的,比一般虚拟机起的快多了. 搭建好docker以后就是主要的先看网络

微信小程序实现即时通信聊天功能的实例代码

项目背景:小程序中实现实时聊天功能 一.服务器域名配置 配置流程 配置参考URL:https://developers.weixin.qq.com/miniprogram/dev/api/api-network.html 二.nginx中配置反向代理加密websocket(wss) ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 3