websocket

I am getting this error “TypeError: str() takes at most 1 argument (2 given)” at “client_response” variable

蹲街弑〆低调 提交于 2021-02-18 22:55:43
问题 EDIT to format: This is the original code from __future__ import print_function import socket import sys def socket_accept(): conn, address = s.accept() print("Connection has been established | " + "IP " + address[0] + "| Port " + str(address[1])) send_commands(conn) conn.close() def send_commands(conn): while True: cmd = raw_input() if cmd == 'quit': conn.close() s.close() sys.exit() if len(str.encode(cmd)) > 0: conn.send(str.encode(cmd)) client_response = str(conn.recv(1024), "utf-8") print

I am getting this error “TypeError: str() takes at most 1 argument (2 given)” at “client_response” variable

旧街凉风 提交于 2021-02-18 22:55:08
问题 EDIT to format: This is the original code from __future__ import print_function import socket import sys def socket_accept(): conn, address = s.accept() print("Connection has been established | " + "IP " + address[0] + "| Port " + str(address[1])) send_commands(conn) conn.close() def send_commands(conn): while True: cmd = raw_input() if cmd == 'quit': conn.close() s.close() sys.exit() if len(str.encode(cmd)) > 0: conn.send(str.encode(cmd)) client_response = str(conn.recv(1024), "utf-8") print

Update React state via Socket.io

自作多情 提交于 2021-02-18 06:58:36
问题 My React component uses data from socket.io as it's state. I am unsure how to just update the state when the data is updated without re-rendering the entire component. Example code. var socket = io(); var data = { components: [{key: '',name: '',markup: ''}] }; socket.on('data', function(_) { data = _; }); var Components = React.createClass({ displayName: "Components", getInitialState: function getInitialState() { return data; }, handleChange: function handleChange() { this.setState(data); },

WebSocket Stomp over SockJS - http custom headers

这一生的挚爱 提交于 2021-02-17 21:25:33
问题 I'm using stomp.js over SockJS in my javascript client. I'm connecting to websocket using stompClient.connect({}, function (frame) { stomp over sockJS connection has 2 http requests: request to /info http upgrade request the client sends all cookies. I would like to also send custom headers (e.g. XSRF header) but didn't find a way to do that. Will appreciate any help. 回答1: @Rohitdev So basically you can't send any HTTP headers using stompClient, because STOMP is layer over websockets, and

国产微服务网关-Soul(真香)

旧街凉风 提交于 2021-02-17 13:13:14
What is the Soul? 一个异步的,高性能的,跨语言的,响应式的API网关。我希望能够有一样东西像灵魂一样,保护您的微服务。参考了Kong,Spring-Cloud-Gateway等优秀的网关后,站在巨人的肩膀上,Soul由此诞生! 是不是很吊的一句话,站在巨人身上那么这些巨人也就变成了矮子。 整体架构如下图所示: 是不是很炫反正我是没看懂 部署单机版 操作在windows环境 安装SoulAdmin souladmin:控制台,负责维护网关的 元数据 、配置等等,并提供给 SoulBootstrap 网关服务 读取。 在mysql数据库中执行下面图中sql,12张表 在浏览器输入 https://yu199195.github.io/jar/soul-admin.jar 回车下载即可,yml文件复制一份在外部启动,用自己的数据库 启动命令:java -jar soul-admin.jar --spring.config.location=xxxxx\application-local.yml 启动成功后 通过日志看到 Soul Admin 启动在 9095 端口。使用浏览器,访问 http://127.0.0.1:9095/ 地址,进入登录页,账号密码分别是:admin 和123456 安装SoulBootstrap SoulBootstrap:网关服务,负责启动网关

Netty进阶

孤街浪徒 提交于 2021-02-15 00:07:37
一、Netty核心模块 BootStrap:客户端程序的启动引导类 ServerBootStrap:服务端程序的启动引导类 它们的常用方法有: - group:设置线程组 - channel:指定通道的实现类 - option:给channel添加配置 - childOption:给接收到的channel添加配置 - handler:设置bossGroup的handler - childHandler:设置workGroup的handler Selector:用来接收注册的channel的。当往selector中注册channel后,selector就会自动不断地轮询这些channel是否有就绪的IO事件。 ChannelHandler:是一个接口,处理IO事件或者拦截IO事件,也就是说你拿到channel后想干的事情都通过channelHandler来完成。 ChannelPipeline:是一个handler的集合,负责处理和拦截入站事件和出站操作。一个channel包含了一个ChannelPipeline,而ChannelPipeline又维护了一个由ChannelHandlerContext组成的双向链表,并且每个ChannelHandlerContext中又关联着一个ChannelHandler。入站事件就是从链表头传递到链表尾的handler

WebSocket 协议

北战南征 提交于 2021-02-14 04:27:34
WebSocket 协议 1.1 背景知识 由于历史原因,在创建一个具有双向通信机制的 web 应用程序时,需要利用到 HTTP 轮询的方式。围绕轮询产生了 “短轮询” 和 “长轮询”。 短轮询 浏览器赋予了脚本网络通信的编程接口 XMLHttpRequest ,以及定时器接口 setTimeout 。因此,客户端脚本可以每隔一段时间就主动的向服务器发起请求,询问是否有新的信息产生: 客户端向服务器发起一个请求,询问 “有新信息了吗” 服务端接收到客户端的请求,但是此时没有新的信息产生,于是直接回复 “没有”,并关闭链接 客户端知道了没有新的信息产生,那么就暂时什么都不做 间隔 5 秒钟之后,再次从步骤 1 开始循环执行 长轮询 使用短轮询的方式有一个缺点,由于客户端并不知道服务器端何时会产生新的消息,因此它只有每隔一段时间不停的向服务器询问 “有新信息了吗”。而长轮询的工作方式可以是这样: 客户端向服务器发起一个请求,询问 “有新信息了吗” 服务器接收到客户端的请求,此时并没有新的信息产生,不过服务器保持这个链接,像是告诉客户端 “稍等”。于是直到有了新的信息产生,服务端将新的信息返回给客户端。 客户端接收到消息之后显示出来,并再次由步骤 1 开始循环执行 可以看到 “长轮询” 相较于 “短轮询” 可以减少大量无用的请求,并且客户端接收到新消息的时机将会有可能提前。 继续改进

wsgi、uwsgi、asgi协议的关系

徘徊边缘 提交于 2021-02-13 21:52:35
WSGI, UWSGI和ASGI 首先是介绍什么是WSGI, 接着是什么是UWSGI, 接着是ASGI 首先需要介绍的是CGI, CGI全称(Common Gateway Interface, 通用网关接口),定义的是客户端与Web服务器交流方式的一个程序.例如正常情况下客户端发送来一个请求,CGI根据HTTP协议的将请求内容进行解析, 经过计算以后会将计算出来的内容封装好,比如服务器返回一个html页面,并且根据http协议构建返回的内容格式,涉及到的tcp连接、http原始请求和相应的格式这些, 都是由一个软件来完成,完成以上的工作需要一个程序来完成, 便是CGI。   关于WSGI, 全称 Web服务器网关接口(Python Web Server Gateway Interface, WSGI), 是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口..简单来说就是 用来处理Web服务端与客户端的通信问题的 ,(以django框架为例,使用的是wsgiref模块,该模块的功能) 以django框架为例,使用的是wsgiref模块,该模块的功能是: 监听8000端口,把http请求根据WSGI协议将其转换到applcation中的environ参数, 然后调用application函数.

Spring boot常见面试题

和自甴很熟 提交于 2021-02-13 21:49:11
1、什么是 Spring Boot? 多年来,随着新功能的增加,spring 变得越来越复杂。访问spring官网页面,我们就会看到可以在我们的应用程序中使用的所有 Spring 项目的不同功能。如果必须启动一个新的 Spring 项目,我们必须添加构建路径或添加 Maven 依赖关系,配置应用程序服务器,添加 spring 配置。因此,开始一个新的 spring 项目需要很多努力,因为我们现在必须从头开始做所有事情。 Spring Boot 是解决这个问题的方法。Spring Boot 已经建立在现有 spring 框架之上。使用 spring 启动,我们避免了之前我们必须做的所有样板代码和配置。因此,Spring Boot 可以帮助我们以最少的工作量,更加健壮地使用现有的 Spring功能。 2、Spring Boot 有哪些优点? 1、减少开发,测试时间和努力。 2、使用 JavaConfig 有助于避免使用 XML。 3、避免大量的 Maven 导入和各种版本冲突。 4、提供意见发展方法。 5、通过提供默认值快速开始开发。 6、没有单独的 Web 服务器需要。这意味着你不再需要启动 Tomcat,Glassfish或其他任何东西。 7、需要更少的配置 因为没有 web.xml 文件。只需添加用@ Configuration 注释的类,然后添加用@Bean 注释的方法

.Net Webapi SignalR与微信小程序的交互

左心房为你撑大大i 提交于 2021-02-13 13:55:40
.Net Webapi S ignal R 与微信小程序 的交互 一、SignalR与Webapi 1、SignalR的安装: Signalr与跨域仅需要安装两个开源库 Microsoft.Owin.Cors是配置跨域需要使用到的库。 2、SignalR的配置 需要新建一个 Startup.cs文件来编写配置代码,我是建在App_Start文件夹里,与其他配置文件统一放置一起。 Configuration的配置不仅限于如此配置,也可以自定义,如: 3、Hub与Webapi的整合 创建 Webapi父类,继承ApiController。则可以在需要使用Hub实时推送消息的api中继承这个父类,便可以直接使用Clients或Groups推送消息。简单来讲,就是可以通过Webapi进行signalr的消息推送。 4、Hub的创建与事件 直接在新建项中便可以创建对应的类文件。 在新建的文件中需要重写 Hub的几个事件: 这 3个事件都可以在其中进行业务处理。 在这个集线器中还可以定义推送消息的方法,后面在 Web中可以直接调用。 二、SignalR与Web 当安装 SignalR的时候,signalr会自带创建了Script文件夹(如还没有改文件夹的话),里面会新增一些js文件: 在 Web的调用中,就会使用到jquery.signalR-2.0.0.js。这里简单介绍一下使用即可