Socket.IO + Express实现的跨浏览器、子域的聊天室

简介: 实例中用到了(实例在Windows XP下运行):Node.js、Socket.IO、Express.js、jade、stylus   先在hosts文件中添加两行规则,关于两个子域的:sub1.

 

实例中用到了(实例在Windows XP下运行):Node.jsSocket.IOExpress.jsjadestylus

 

先在hosts文件中添加两行规则,关于两个子域的:sub1.localhost、sub2.localhost

使用socket.io

   1: var exp = require('express');
   2: var app = exp.createServer();
   3:  
   4: global.socket = require('socket.io').listen(app);
   5: global.socket.set('log level', 1);
   6: global.socket.set('transports', [ 'websocket', 'flashsocket', 'htmlfile', 'xhr-polling', 'jsonp-polling']);

加载配置,创建子域的应用

   1: app.use(exp.vhost('sub1.' + global.host, require('./subdomains/sub1')));
   2: app.use(exp.vhost('sub2.' + global.host, require('./subdomains/sub2')));
   3:  
   4: require('./app/config')(app, exp);
   5: require('./app/server/router')(app);
   6: require('./app/server/modules/chat-socket');

chat-socket.js模块

   1: module.exports = function() {
   2:         
   3:     global.socket.of('/chat').on('connection', function(socket) { 
   4:        //todo 
   5:     });
   6: }();

前台页面使用socket.io.js建立连接

   1: socket = io.connect('/chat');
   2: socket.on('status', function (connections) {
   3:     
   4: });
   5: socket.on('user-ready', function (data) {
   6:     
   7: });
   8: socket.on('user-message', function (data) {
   9:     
  10: });
  11:  
  12: socket.on('user-disconnected', function (data) {
  13:     
  14: });
  15:  
  16: //向后台发送消息
  17: socket.emit('user-ready', {name : 'xxx'});

 

运行完整的示例node app.js即可,下载示例源码>>

 

本文参考:

1、http://www.quietless.com/kitchen/building-a-node-js-chat-application-and-sharing-socket-io-across-multiple-subdomains/

2、creating-a-basic-site-with-node-and-express

目录
相关文章
|
Web App开发 前端开发 安全
使用JS+socket.io+WebRTC+nodejs+express搭建一个简易版远程视频聊天
使用JS+socket.io+WebRTC+nodejs+express搭建一个简易版远程视频聊天
511 0
使用JS+socket.io+WebRTC+nodejs+express搭建一个简易版远程视频聊天
|
1月前
|
存储 缓存 安全
Java 中 IO 流、File文件
Java 中 IO 流、File文件
|
17天前
|
Java Unix Windows
|
2天前
|
Java 开发者
Java一分钟之-Java IO流:文件读写基础
【5月更文挑战第10天】本文介绍了Java IO流在文件读写中的应用,包括`FileInputStream`和`FileOutputStream`用于字节流操作,`BufferedReader`和`PrintWriter`用于字符流。通过代码示例展示了如何读取和写入文件,强调了常见问题如未关闭流、文件路径、编码、权限和异常处理,并提供了追加写入与读取的示例。理解这些基础知识和注意事项能帮助开发者编写更可靠的程序。
8 0
|
6天前
|
存储 缓存 Java
Java IO 流详解
Java IO 流详解
16 1
|
11天前
|
存储 Java
java IO接口(Input)用法
【5月更文挑战第1天】Java的`java.io`包包含多种输入输出类。此示例展示了如何使用`FileInputStream`从`input.txt`读取数据。首先创建`FileInputStream`对象,接着创建一个字节数组存储读取的数据,调用`read()`方法将文件内容填充至数组。然后将字节数组转换为字符串并打印,最后关闭输入流。注意,`InputStream`是抽象类,此处使用其子类`FileInputStream`。其他子类如`ByteArrayInputStream`、`ObjectInputStream`和`BufferedInputStream`各有特定用途。
21 2
|
13天前
|
存储 Java Linux
【Java EE】 文件IO的使用以及流操作
【Java EE】 文件IO的使用以及流操作
|
17天前
|
存储 Java 数据库
[Java 基础面试题] IO相关
[Java 基础面试题] IO相关
|
18天前
|
缓存 Java API
Java NIO和IO之间的区别
NIO(New IO),这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。在Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。
16 1
|
21天前
|
Java
Java基础教程(12)-Java中的IO流
【4月更文挑战第12天】Java IO涉及输入输出,包括从外部读取数据到内存(如文件、网络)和从内存输出到外部。流是信息传输的抽象,分为字节流和字符流。字节流处理二进制数据,如InputStream和OutputStream,而字符流处理Unicode字符,如Reader和Writer。File对象用于文件和目录操作,Path对象简化了路径处理。ZipInputStream和ZipOutputStream则用于读写zip文件。