socket函数

laravel 5.8 实现消息推送

一个人想着一个人 提交于 2019-11-26 14:13:56
以下教程是基于5.6 的,在使用5.8实现时遇到一些问题,做一下记录 在我看来,实时通信才是 APP 应用的将来。 Socket 服务通常不是那么容易实现,但是 Laravel Echo 服务改变了这个情况。 在本文中,我将会简要的介绍如何建立一个可以运行的 Socket 服务并且在这个服务上进行事件的广播。( https://github.com/tlaverdure/laravel-echo... , Laravel 的支持文档: https://learnku.com/docs/laravel/5.6/broadcasting#... ) 它是完全免费的,你只要运行你自己的 Socket 服务。你也可以使用 Laravel 默认集成的 Pusher ,唯一的缺点是它是有限制的,如果超出限制则需要付费。我更喜欢自己来架构这些东西。 要求: Laravel 框架 (本教程使用了 5.6 版本) Redis 服务 基本的 Laravel 知识 安装 laravel-echo-server 首先我们需要全局安装 laravel-echo-server , 你只需在终端输入下面的命令。 $ npm install -g laravel-echo-server 安装完成后,打开你的 Laravel 应用,或者新启一个测试项目: $ composer create-project -

【Django】Web框架本质 -- 2019-08-08 18:03:29

梦想的初衷 提交于 2019-11-26 13:52:39
目录 根据不同的路径返回不同的内容 普通版 函数版 函数进阶版 返回具体的HTML文件 让网页动态起来 服务器和应用程序 wsgiref 模块 原文: http://106.13.73.98/__/32/ @ * 我们可以这样理解:所有的==Web应用本质上就是一个socket服务端==,而用户的==浏览器就是一个socket客服端==。** 这样我们就可以自己实现Web框架了: from socket import * sk = socket(AF_INET, SOCK_STREAM) sk.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) sk.bind(('127.0.0.1', 8080)) sk.listen() while True: conn, addr = sk.accept() data = conn.recv(9000) conn.send(b'HTTP/1.1 200 OK\r\n\r\n') # 响应状态行 conn.send(b'Hello,world!') conn.close() 可以说Web服务本质上都是在这十几行代码基础上扩展出来的,这段代码就是它们的祖宗。 用户的浏览器一输入网址,会给服务端发送数据,那浏览器会发送什么数据?怎么发?这个谁来定? 你这个网站是这个规定,他那个网站按照他那个规定,这互联网还能玩么? 所以

前端笔记之微信小程序(四)WebSocket&Socket.io&摇一摇案例&地图|地理位置

大憨熊 提交于 2019-11-26 12:16:06
一、 WebSocket 概述 http://www.ruanyifeng.com/blog/2017/05/websocket.html Workerman 一款开源高性能异步 PHP socket 即时通讯框架 https://workerman.net HTTP 是无连接的:有请求才会有响应,如果没有请求,服务器想主动推送信息给浏览器是不可能的。 比如图文直播、聊天室原理:长轮询。 setInterval(function(){ $.get() },1000) 间隔一定的时间,主动向服务器发起请求,询问是否有新消息。 WebSocket是一种网络通信协议, 是 HTML5中的新协议。 需要服务器和浏览器共同支持,实现全双工通信。 服务器: PHP5.6 、 Java1.7 、 Nodejs 6以上。 浏览器:Android 6.0及以上版本。 WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。 在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道

Socket封装之聊天程序(一)

﹥>﹥吖頭↗ 提交于 2019-11-26 04:27:39
  之前使用IPC编写过聊天程序,但是这样仅能在同一台计算机上进行聊天;要使得在不同的计算机(不同的IP+端口)上也能进行通信,就需要用到socket编程。前面说到,要处理多客户端的响应问题,需要I/O复用,即调用select或者epoll。通常我们使用epoll函数,以下例子也是。   接下来,我们需要封装一个地址类。为什么要封装这样一个类呢?   在前面的练习中,我们可以看到,在socket规程中,需要反复用到struct sockaddr_in 这个地址,包括以下的bind绑定过程也是经常出现的,而且这些方法其实都是系统函数,我们并不希望每次都直接使用,不进繁琐难记,而且可读性差。所以,我们需要封装一个地址类CAdress,将这些步骤在函数内部实现。       编写CAdress类    CAdress.h: #ifndef _ADRESS_H_ #define _ADRESS_H_ #include <netinet/in.h> //sockaddr_in #include <arpa/inet.h> class CAdress { public: CAdress(char *ip,unsigned short port); CAdress(); ~CAdress(); void setIP(char *ip); void setPort(unsigned short

Socket封装之聊天程序(三)

故事扮演 提交于 2019-11-26 03:57:52
  今天,完成一下epoll的封装。 类图   首先,还是画下类图,初步设计一下。   具体函数,我们下面详解。 epoll封装 EpollBase类 CEpollBase.h: class CEpollBase { public: CEpollBase(int max_events); virtual ~CEpollBase(); bool Create(int size); bool AddEvent(int fd,int events); bool ModEvent(int fd,int events); bool DelEvent(int fd,int events); bool Wait(int timeout = -1); //监听一次事件的发生 virtual void onEvent() = 0; void Start(); void Stop(); protected: struct epoll_event *m_rlt_events; struct epoll_event m_event; int m_nEvent; int m_epfd; private: int m_max_events; bool isRun; };   在之前,我们监听事件的发生并进行处理,是放在while(1)循环里的,但是,真正项目里是不能存在死循环的,所以,这里的Wait(

QT笔记

[亡魂溺海] 提交于 2019-11-25 22:26:59
(1)QT中socket容易出现发送多个数据时容易连在一起发送,导致客户端接收解析数据时出现混乱 解决方法:可以使用socket->flush();函数清理一下缓存 来源: CSDN 作者: weixin_41353840 链接: https://blog.csdn.net/weixin_41353840/article/details/103236879