- 服务器端广播文本
- 所有客户端都可以收到

--- 客户端

- 定义文本框
- 定义发送事件
textarea accesskey =t oninput="sendmsg();"
- 发送协议
ws:// 普通web-socket
wss:// 加密web-socket

客户端-创立连接

var ws,currentUser,ele;
window.onload = function() {
ws = new WebSocket("ws://my server:8887"); // 连接建立成功onopen事件会被调用
ws.onopen = function() {
$("status").innerHTML = 'online';
$("status").style.color = 'green'; // 消息接受成功会唤起消息
ws.onmessage = function(e) {
var msg;
try {
msg = JSON.parse(e.data);
} catch (SyntaxError) {
$("debug").innerHTML = "invalid message";
return false;
}
}

客户端-发送消息

function sendmsg()  {
ws.send($("ta").value);
}
// 关闭事件
ws.onclose = function(e){
$("status").innerHTML = 'offline';
$("status").style.color = 'red';
}; window.onunload = function(){
ws.close();
};

服务器端-创建连接

var ws = require(__dirname + '/lib/ws'),
server = ws.createServer();
var user_cols = {};
server.addListener ("connection", function(conn) {
var h = conn._server.man ager.length*70;
// 使用不同颜色标注用户ID
user_cols[conn.id] = "hsl("+h+",100%,30%)";
var msg = {};
msg.user = conn.id;
msg.color = user_cols[conn.id];
msg.text = "<em>一个新的用户加入聊天!</em>";
// 广播
conn.broadcast(JSO N.stringify(msg));
}

服务器端-监听广播

conn.addListener("message",  function(message) {
var msg = {};
// 防注入处理
message = message.replace(/</g, "&lt;");
message = message.replace(/>/g, "&gt;");
msg.text = message;
msg.user = conn.id;
msg.color = user_cols[conn.id];
// 输出内容
conn.write(JSON.st ringify(msg));
// 广播
conn.broadcast(JSO N.stringify(msg));
});
});

服务器端-关闭

server.addListener("close",  function(conn)  {
var msg = {};
msg.user = conn.id;
msg.color = user_cols[conn.id];
msg.text = "<em>一个用户已经离开了聊天!</em>";
conn.broadcast(JSO N.stringify(msg));
});
server.listen(8887);

HTML5之广播聊天室的更多相关文章

  1. web 开发之js---HTML5之广播聊天室

    那个头标题很有意思js做的 http://www.cnblogs.com/xgao/p/4200985.html

  2. h5聊天室web端(仿微博、微信)|h5仿微信网页端|仿微信界面弹窗

    这段时间一直在着手h5开发手机端聊天系统——html5仿微信聊天室,最近又在原先基础上开发了一个仿微信.微博网页web版聊天系统,使用到了HTML5+css3+jQuery+wcpop等技术开发,弹窗 ...

  3. WebSocket 网页聊天室

    先给大家开一个原始的websocket的连接使用范例 <?php /* * recv是从套接口接收数据,也就是拿过来,但是不知道是什么 * read是读取拿过来的数据,就是要知道recv过来的是 ...

  4. 使用Html5下WebSocket搭建简易聊天室

    一.Html5WebSocket介绍 WebSocket protocol 是HTML5一种新的协议(protocol).它是实现了浏览器与服务器全双工通信(full-duplex). 现在,很多网站 ...

  5. WebSocket 网页聊天室的实现(服务器端:.net + windows服务,前端:Html5)

    websocket是HTML5中的比较有特色一块,它使得以往在客户端软件中常用的socket在web程序中也能轻松的使用,较大的提高了效率.废话不多说,直接进入题. 网页聊天室包括2个部分,后端服务器 ...

  6. HTML5 - websocket的应用 之 简易聊天室

    需要知识点: 前端知识 jq操作dom nodejs socket.io 关于websocket api的知识点,见上篇章<HTML5-Websocket>. 聊天室思路/原理: A和B聊 ...

  7. HTML5新特性 websocket(重点)--多对多聊天室

    一.html5新特性  websocket(重点)--多对多聊天室 HTTP:超文本传输协议 HTTP作用:传输网页中资源(html;css;js;image;video;..) HTTP是浏览器搬运 ...

  8. php +html5 websocket 聊天室

    针对内容比较长出错,修改后的解码函数 和 加码函数 原文请看上一篇 http://yixun.yxsss.com/yw3104.html function uncode($str,$key){ $ma ...

  9. html5 websocket + node.js 实现网页聊天室

    1 client:    socket.io server:   node.js +  express  + socket.io 一个简单的聊天室  demo,没有注册,内置了一些测试用户 2 cli ...

随机推荐

  1. Splash and Wizard

    https://github.com/xcz1899/AndroidGuide https://github.com/w446108264/XhsWelcomeAnim https://github. ...

  2. php对象当参数传递 && php深复制和浅复制

    把对象当参数传递给方法,在方法里改过对象后,影响到外面的对象  因为对象是引用传递过去的 class Book { public $name; public function __construct( ...

  3. 中兴电信光纤猫F612管理员密码获取方法

    1.telnet 192.168.1.1 账号:root 密码:Zte521 2.输入命令: sendcmd 1 DB p DevAuthInfo 得到管理员账号密码如下: <DM name=& ...

  4. 深入研究Block用weakSelf、strongSelf、@weakify、@strongify解决循环引用(上)

    深入研究Block捕获外部变量和__block实现原理 前言 在上篇中,仔细分析了一下Block的实现原理以及__block捕获外部变量的原理.然而实际使用Block过程中,还是会遇到一些问题,比如R ...

  5. ES各种错误解决

    _update API 执行报错 错误信息: { "error": { "root_cause": [ { "type": "re ...

  6. javaweb学习总结十八(软件密码学、配置tomcat的https连接器以及tomcat管理平台)

    一:软件密码学 1:对称加密 对称加密是最快速.最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key).对称加密有很多种算法,由于它效 ...

  7. [转]Using Replacement Strings with Regex.Replace

    本文转自:http://www.knowdotnet.com/articles/regereplacementstrings.html The String.Replace function has ...

  8. 转:基于Webrtc的跨平台实时语音通信解决方案(讲座)

    转:http://edu.csdn.net/course/detail/320/

  9. Delphi 中的MD5实现方法(转)

    在Delphi自带的Indy控件中其实是提供了MD2,MD4,MD5对象的,我们可以直接使用它们来完成MD5的签名算法.而不需要再去找其它的DLL或是Pas了. 在Uses单元中引用 IdHashMe ...

  10. Java Concurrency - java.util.concurrent API Class Diagram

    摘自: www.uml-diagrams.org Here we provide several UML class diagrams for the Java™ 7 java.util.concur ...