lhx6538665 lhx6538665
我不吃肉哈!
关注数: 6 粉丝数: 22 发帖数: 777 关注贴吧数: 31
Knockout与SignalR实现FB的聊天功能(一) 前言与页面准备(转) SignalR是套可达到 Server 与 Client 端之间能 Real-Time 推送数据的 Library 解释:HTTP 是一种 Request-Response Pattern, Client 端必须发出 Request 给 Server 端,Server 才会 Response 给Client端。 而 SignalR 也是一样走 HTTP,只是采 Long-polling 的方式(其中一种),减少 Client 与 Server 之间 Request-Response 的次数, 藉以降低联机所花费的成本。 用真实案例来想象,传统的 polling 方式,就是 Client 一直问,Server 一直答。http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fwww.it165.net&urlrefer=a0c7f6122f1629ba277ff606cbfac0ed Client:我要买票。 Server:还没开卖。 Client:我要买票。 Server:还没开卖。 Client:我要买票。 Server:还没开卖。 Client:我要买票。 Server:有了,需要几张? Client:我要2张。 可以把对话过程当作是发简讯,每问一句话都要3块钱的成本。 而 Long-polling 像是把 Server 变成像是一个温吞的人,让 Client 保持联机以等待回应 Client:我要买票。 Server:嗯…等等…嗯…有人去问开卖了没…等等…(想个10秒),回答:还没开卖。 Client:我要买票。 Server:嗯…等等…嗯…有人去问开卖了没…等等…(3秒过后,有人通知开卖了),回答:有了,需要几张? Client:我要2张。 Knockout 是一套 Javascript 的 Library,其好用之处在于能将 DOM 元素与 Javascript model 做双向系结(MVVM Pattern),可简化自己撰写绑定事件以及通知的机制。 若有一个 model 设计为 var model = { name : 'Jerry' }; 并且利用 knockout 绑定到一个 input 上,此后不管修改 model 或 input 的值,另外一方都能接收到通知并做相应的改变。 这次写的系列文,会仔细的从一个静态版面,到套用 knockout 来体验 MVVM 的优点,接着在藉由 SignalR 来做到类似 FB 的聊天功能。 这是系列文的第一篇,因此只有前言跟一些学习资源共享,若对这两项技术有兴趣的朋友,可以在接下来的文章中,一起来分享与讨论。 下面是之后范例所用到的版型,档案可于完整范例下载网址这边下载。代码下载:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fcodes.it165.net%2Fhtml%2F201211%2F10.html&urlrefer=1083feef70b0fab7dee34afa466f6c39
晒晒我的俄罗斯方块,花了近一个星期,本人大一,刚学不到一年 //俄罗斯方块 #include "stdafx.h" #include <iostream> #include <iomanip> #include <conio.h> #include <windows.h> #include <time.h> using namespace std; int arr[25][12];//游戏画面大小 char key;//记录输入的字符 int second[4][4];//记录出现的方块的形状 int upcoming[4][4];//下一个方块的形状 int abscissa = 4;//横坐标 int ordinate = 1;//纵坐标 int sec = 1000;//下落的时间 long score = 0;//记录得分 int grade = 0;//等级 int die =0;//死了 void end()//结束 {      for(int i = 1; i < 11;i ++ )          if(arr[5][i])              die = 1; } void output()//输出屏幕 {      system("cls");      for(int i = 4;i < 25;i ++)      {          if(i == 4)              cout<<"■■■■■■■■■■■■"<<endl;          for(int j = 0;j < 12;j ++)          {              if(arr[i][j])                  cout<<"■";              else                  cout<<"□";          }          if(i < 8)              for(int k = 0; k < 4;k ++ )              {                  if(upcoming[i - 4][k])                      cout<<"■";                  else                      cout<<"□";              }          if(i == 8)              cout<<"等级:";          if(i == 9)              cout<<setw(6)<<grade;          if(i == 10)              cout<<"分数:";          if(i == 11)
1 下一页