Go Revel - Websockets】的更多相关文章

revel提供了对`Websockets`的支持. 处理`Websockets`链接: 1.添加一个`WS`类型方法的路由 2.添加一个action接受 `*websocket.Conn`参数 例如, 将下面添加至`routes`文件: WS /app/feed Application.Feed 添加一个action: import "code.google.com/p/go.net/websocket" func (c App) Feed(user string, ws *webso…
`Routing`路由控制着请求应该由哪些控制器接受. 它在项目的`conf/routes`文件中定义. 格式为: (METHOD) (URL Pattern) (Controller.Action) (请求方法) (URL 匹配模式) (Controller.Action) 示例: # conf/routes # This file defines all application routes (Higher priority routes first) GET /login App.Logi…
CSRF是什么?请看这篇博文“浅谈CSRF攻击方式”,说的非常清楚. 现在做网站敢不防CSRF的我猜只有两种情况,一是没什么人访问,二是局域网应用.山坡网之前属于第一种情况,哈哈,所以至今没什么问题.但昨天突然发现了有人开始扫url,估计用的是个工具,很整齐的扫了一大片知名框架和数据库管理工具的管理员登陆url.还好我们没有使用其中的任何一个,侥幸没事.但这也给我敲响了警钟,互联网上那是危机重重啊. 于是第一步就开始加上CSRF保护,搞起来还是花费了些时间,暗叹这种事情还是刚开始就做最容易. 好…
所有的网站应该都会有一个非常简单的需求,首页一秒之内打开. 满足的方式主要有两种: 页面静态化,效果最好,对服务器基本没负担,只要带宽足够就好了.我知道一个PV过亿的站点就是全站静态(以前新浪也是),据说早就想换成动态的,可以省很多事儿,但至今仍然没有成功. 数据内存化,把常用的数据全都放到内存,定期分批写入硬盘.相比静态页面,这个方法对CPU的要求稍高.好处就不细说了,动态网页的好处相比大家都耳熟能详了. 山坡网选择了第二种方案,数据内存化. revel本身提供了cache支持,可通过配置切换…
这里要介绍好是revel框架的表单post提交的列子,主要是用于入门学习,和一些知识点的讲解: 首先: 来了解一个问题那就是重复提交表单,做过form表单提交的同学都知道,如果表单提交后不做处理,那么直接在浏览器按下F5,会再次提交表单内容到服务器,这就是重复提交,当然要防止这个有多种方法,这里简单描述一种常见的: 一种是加入token失效验证,这个token其实就是一个值,验证的原理是第一次客户打开页面时候获取到一个分配的值,每次用户刷新页面的时候这个分配的值都需要变动,并且这个值在用户提交表…
1. WebSockets -- full-duplex communication The main HTML5 pillars include Markup, CSS3, and JavaScript APIs For whole set of HTML5, visit html5rocks.com (google product)   The URL The following image shows the WebSocket URL example in tokens: schema…
由于revel框架本身对于model层的编写没有提供任何指导,所以在设计这部分的时候就有些犹豫,反复斟酌到底怎样才算是最佳实践. 我在做山坡网的时候刚开始也纠结了一下,拿不准mongodb的session的创建和销毁应该在什么地方处理.直到有一天看到了revmgo的作者在与revel的作者讨论(具体内容在这里),就去研究了下revmgo,之后立即就用它替换了我自己的实现. 先说下用法吧. 1. 在app.conf添加mongodb的连接字符串. revmgo.dial = mongodb://u…
一个站点上面最基本都会有三种用户角色,未登录用户.已登录用户和管理员.这一次我们就来看看在revel框架下如何进行权限控制. 因为revel是MVC结构的,每一个url其实都会映射到一个具体的Controller.Action上面,所以权限控制落到实处就是对Action的访问进行控制. 那么思路是如下: 1. 有一个方法能够判定当前是什么角色. 2. 有一地方定义了每一个Action的访问权限要求. 3. 有一个方法能够在调用所有Action之前被调用,而且能够判定是否还要继续调用Action.…
用户注册.登录和注销是任何一个网站都必然会有的功能,可以说,这是重新造轮子做多的领域,每个做网站的人应该都做过很多遍.见微知著,从这么一个小功能其实就可以看到所使用的web框架中的大部分东西. 今天就让我们用这个基本模块来看看revel吧. 先整理一下我们选用的技术框架和组件: web框架:revel 数据库:mongodb 数据库driver:mgo 工欲善其事,必先利其器,这里着重推荐一个mongodb的GUI客户端 - mongovue,可以说,如果没有这个工具,在开发的过程中我们会痛苦许…
工作时使用了Websocket技术,在使用的过程中发现,浏览器(Chrome)升级后可能会导致Websocket不可用,更换浏览器后可以正常使用. 近日偶尔一次在本地调试,发现使用相同版本的Chrome浏览器,不可连接线上服务器的WS服务,但是可以连接本地的WS服务. 此时初步怀疑是服务器在某种特殊情况下会触发无法连接的问题. 使用Wireshark抓包 Filter:    ip.dst==serverIP or (ip.dst==本地IP and ip.src==serverIP) 一.查看…