`

使用Node.js-0.8.20和socket.io-0.9.13实现WebSocket

阅读更多
参考资料:
http://cnodejs.org/topic/4f32142e69bab4d67601bd1b
http://www.oschina.net/question/12_54009

在使用socket.io之前,我按照网上的各种成功的例子,尝试使用node-websocket-server库实现WebSocket.
我先从https://github.com/miksago/node-websocket-server下载的node-websocket-server. 然后使用Chrome24浏览器,通过WebSocket对象发送请求,结果服务器端识别成draft75,并且报process.studo.flush函数不存在等异常.网上说是库的版本过低,无法识别新的WebSocket标准.
估计网上的那些例子都是基于低版本的浏览器和node-websocket-server库实现的,于是我放弃node-websocket-server库,改用socket.io库.

1. 下载和安装Node.js

下载地址:http://nodejs.org/dist/v0.8.20/node-v0.8.20-x86.msi
下载之后在本地执行安装.

2. 安装socket.io

我使用Eclipse创建的工程的目录结构:
-----------------------------------------------

-----------------------------------------------

打开CMD,跳转到WebContent目录下,执行命令: npm install socket.io
等待,直到安装完毕,返回CMD输入状态.
安装完成的secket.io库的目录结构:
-----------------------------------------------

-----------------------------------------------

-----------------------------------------------

3. 创建服务器端代码Server.js

var fs = require('fs'), http = require('http'), socketio = require('socket.io');
 
var server = http.createServer(function(req, res) {
    res.writeHead(200, { 'Content-type': 'text/html'});
    res.end(fs.readFileSync(__dirname + '/index.html'));
}).listen(8080, function() {
    console.log('Listening at: http://localhost:8080');
});
 
socketio.listen(server).on('connection', function (socket) {
    socket.on('message', function (msg) {
        console.log('Message Received: ', msg);
        socket.broadcast.emit('message', msg);
    });
});


4. 创建客户端代码index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="jquery-1.8.2.js"></script>
<!-- 这里要引用secket.io客户端文件 -->
<script type="text/javascript" src="node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js"></script>
<script type="text/javascript" src="Client.js"></script>
</head>
<body>
	<div>
		Incoming Chat:&nbsp;<ul id="incomingChatMessages"></ul>
		<br/>
		<input type="text" id="outgoingChatMessage">
		<button id="openConnect">Send Message</button>
	</div>
</body>
</html>


5. 创建客户端代码Client.js

$(document).ready(function(){
	var iosocket = io.connect("http://localhost:8080");
    iosocket.on('connect', function () {
        $('#incomingChatMessages').append($('<li>Connected</li>'));

        iosocket.on('message', function(message) {
            $('#incomingChatMessages').append($('<li></li>').text(message));
        });
        iosocket.on('disconnect', function() {
            $('#incomingChatMessages').append('<li>Disconnected</li>');
        });
    });
    $("#openConnect").click(function(event){
		openConnect(iosocket);
	});
});

function openConnect(iosocket){
    iosocket.send($('#outgoingChatMessage').val());
    $('#incomingChatMessages').append($('<li></li>').text($('#outgoingChatMessage').val()));
    $('#outgoingChatMessage').val('');
}


6. 测试

在CMD中,跳转到WebContent目录,执行命令: node Server.js
在浏览器中打开index.html页面,输入信息,点击"Send Message"按钮.
  • 大小: 8.5 KB
  • 大小: 22.5 KB
  • 大小: 28 KB
分享到:
评论
1 楼 registerID 2013-12-20  

网上的文章坑太多,基本都是抄过来抄过去。
这篇文章写的不错

相关推荐

    PyPI 官网下载 | tiddlywebplugins.whoosher-0.9.13.tar.gz

    在使用像tiddlywebplugins.whoosher这样的插件时,了解其背后的原理和功能可以帮助我们更高效地利用这些工具,提升开发效率,实现更复杂的应用场景。 最后,记得在使用任何第三方库或插件之前,都应该查看其官方...

    Python库 | Products.PloneTestCase-0.9.13.zip

    资源分类:Python库 所属语言:Python 资源全名:Products.PloneTestCase-0.9.13.zip 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    x11vnc-0.9.13-12.el7.x86-64.rpm

    x11vnc-0.9.13-12.el7.x86_64.rpm 满足Centos7和8 Based on the ideas of x0rfbserver and on LibVNCServer,

    CARLA0.9.12 和 CARLA 0.9.13 linux 版本的 egg 文件

    CARLA(Car Learning to Act)就是这样一个开源的自动驾驶模拟器,专为实现高级驾驶辅助系统(ADAS)和自动驾驶汽车(AV)的开发、测试和验证而设计。本文将详细介绍CARLA 0.9.12和0.9.13在Linux操作系统中的应用...

    PyPI 官网下载 | buildbot_wsgi_dashboards-0.9.13-py2.py3-none-any.whl

    PyPI(Python Package Index)是Python社区的主要软件仓库,它提供了大量的Python库和模块供开发者下载和使用。标题中的"PyPI 官网下载"表明我们关注的是通过PyPI获取的Python软件包。资源`buildbot_wsgi_dashboards...

    libotf-devel-0.9.13-4.el7.x64-86.rpm.tar.gz

    1、文件内容:libotf-devel-0.9.13-4.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/libotf-devel-0.9.13-4.el7.tar.gz #Step2、进入解压后的目录,执行...

    Python库 | gerapy_pyppeteer-0.0.1-py2.py3-none-any.whl

    3. **Pyppeteer**: Pyppeteer是Python对Puppeteer的封装,Puppeteer是Google Chrome团队开发的一个Node.js库,用于自动化控制Chromium或Chrome浏览器。Pyppeteer允许开发者以JavaScript API的方式远程控制浏览器,...

    libotf-0.9.13-4.el7.x64-86.rpm.tar.gz

    1、文件内容:libotf-0.9.13-4.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/libotf-0.9.13-4.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm ...

    com.schillmania.soundmanager2-0.9.13-sources.jar

    jar包,官方版本,自测可用

    x11vnc-0.9.13.tar.gz

    x11vnc的源码包“x11vnc-0.9.13.tar.gz”包含了编译和安装所需的所有文件。解压后,你会看到一个名为“x11vnc-0.9.13”的目录,其中包含了源代码、文档、配置文件等。这个版本的x11vnc引入了多项优化和新特性,如...

    com.schillmania.soundmanager2-0.9.13.jar

    jar包,官方版本,自测可用

    APIFuzzer-0.9.13-py3-none-any.whl.zip

    标题中的"APIFuzzer-0.9.13-py3-none-any.whl.zip"表明这是一个与API测试和模糊测试相关的工具,版本号为0.9.13,且是适用于Python 3环境的。".whl"后缀是Python的Wheel格式文件,这种格式的文件是预编译的Python...

    maven-t7-plugin-0.9.13.jar

    maven-t7-plugin-0.9.13.jar

    maven-t7-plugin-0.9.13-sources.jar

    maven-t7-plugin-0.9.13-sources.jar

    antenna-bin-0.9.13.jar.zip

    标题中的"antenna-bin-0.9.13.jar.zip"是一个压缩文件,它包含了名为"antenna-bin-0.9.13.jar"的Java可执行文件(JAR文件)以及一个名为"ant.license.txt"的文本文件。这个JAR文件很可能是Antenna项目的一个特定版本...

    毕业设计,基于python多服务器的carla仿真+源代码+文档说明

    # multicarlasevers ## 使用简介: 1. 开启CarlaUE并运行。 2. 在控制台下运行Mult-carla/client下的客户端程序 ``` shell python3 manual_control_selg.py ``` 3. 配置carlaservers.yaml文件,其中需要同步的服务器...

    antenna-bin-0.9.13x.jar.zip

    《Antenna-bin-0.9.13x.jar.zip:构建自动化工具的探索与实践》 在软件开发领域,自动化工具扮演着至关重要的角色,它们能够显著...同时,遵循开源许可协议,合理使用和贡献开源社区,也是每一个开发者应有的责任。

    Python库 | django-python3-ldap-0.9.13.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:django-python3-ldap-0.9.13.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    PyPI 官网下载 | sphinxcontrib-httpexmpl-0.9.13.tar.gz

    描述中的"资源全名:sphinxcontrib-httpexmpl-0.9.13.tar.gz"确认了这个压缩包的完整名称,它是一个经过打包的源代码版本,使用tar.gz格式,这是一种常见的Linux/Unix系统中用于打包和压缩文件的组合格式。...

Global site tag (gtag.js) - Google Analytics