nodejs 平台的 webscoket 的实现
新手入门,没办法,只能选择不断不断的google吧。
找了很多的例子都跑不了,不知道什么原因。
后,自己在git搜索吧,选择了一个下面的例子: nodejs-web-socket
经过我的改造,改成我自己想要的方式。
只是将客户端发送的数据直接原封不动发回客户端。
先说说运行环境:window 7 ,node v0.10.5,全局安装了websocket.io模块,chrome 28浏览器。
(注:以下提到的两个js文件放在同一层目录下面即可,html文件随便放置)
这是后台的js代码:
1、将其存为socketServer.js文件里面,并且进行module导出。
/*
仅用于测试,
客户端发送的东西将被服务器原封不动的返回到客户端
运行环境:node v0.10.5
window 7
chromw 28
*/
/*var server = */module.exports = ( function() {
var ws = require('websocket.io');
var socketServer = null;
var socketInitListen = function(port) {
socketServer = ws.listen(port);
socketServer.on('listening',function() {
console.log('Socket server running');
});
socketServer.on('connection',function(socket) {
console.log('Connected to client');
socket.on('message', function(data) {
// client send message to server
console.log('Server received message : ',data);
socket.send(data);
});
socket.on('close',function() {
socket.send('close');
})
})
};
var init = function(socketPort) {
socketInitListen(socketPort);
};
return {
init: init
};
})(); // server.init(9000);
2、引用上面那个module的文件,并且将端口绑定为9000端口,存为文件server.js。
var socketServer = require('./socketServer').init(9000);
3、页面的代码 :index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>WebSockets Node.js</title>
<style>
.container{
margin:auto;
width:300px;
}
label,input{
width:200px;
float:left;
}
input[type=button]{
float:right;
width:80px;
}
</style>
<script src="http://code.jquery.com/jquery.min.js"></script>
</head>
<body>
<div class="container">
<label for="content">发送的内容:</label><input type="text" id="content" value="input something" />
<label for="recive">收到的内容:</label><input type="text" id="recive" />
<input type="button" id="send" value="点击发送" />
</div>
<script>
// websocket 连接变量
var wsConn;
(function () {
try {
wsConn = new WebSocket('ws://127.0.0.1:9000');
} catch (e) {
console.log("websocket 连接出错。");
console.log(e);
}
})(); $(function() {
if (wsConn) {
wsConn.onopen = function() {
console.log("open Connection.");
};
wsConn.onmessage = function(msg) {
console.log("onmessage.");
console.log(msg.data);
$('#recive').val(msg.data);
};
wsConn.onerror = function(msg) {
console.log("onerror.");
console.log(msg);
};
wsConn.onclose = function(msg) {
console.log("onclose.");
console.log(msg);
};
function wsConnSend(content) {
wsConn.send(content);
};
$('#send').bind('click',function sendClick() {
wsConnSend($('#content').val())
})
}
});
</script>
</body>
</html>
这都是源码的三个文件。
运行的方法为:
1、安装node ,我的版本是0.10.5,其他版本没进行测试;
2、安装websocket.io,命令如下 npm i -g websocket.io;
3、环境弄好了,可以跑了,打开命令行,cd到当前目录,跑 node server.js。
4、直接用chrome以本地文件方式直接打开index.html ,里面操作简单。其他浏览器没进行测试。
搭建完毕。
这是控制台下面的一行命令的截图。

新手习作,若有出错,敬请大神指出。
nodejs 平台的 webscoket 的实现的更多相关文章
- NodeJS平台下的前后端文件共享
一.前后端文件共享的需要背景——为什么需要共享? 项目基本JS/NodeJS全端开发,有部分代码前后端都需要用得到 有一些配置是在前后端都需要用得到的 区别其他开发平台,NodeJS平台下的前后端文件 ...
- Node.app让Nodejs平台在iOS和OS X系统上奔跑
首先呢,欢迎大家去查看相同内容的链接:http://www.livyfeel.com/nodeapp/. 由于那个平台我用的markdown语法,我也懒得改动了,就这样黏贴过来了. 这是一个惊人的恐怖 ...
- 3分钟干货学会使用node-inspector调试NodeJS代码
使用node-inspector调试NodeJS代码 任何一门完备的语言技术栈都少不了健壮的调试工具,对于NodeJS平台同样如此,笔者研究了几种调试NodeJS代码的方式,通过对比,还是觉得node ...
- 【转】前端工程筹建NodeJs+gulp+bower
转自:http://www.myexception.cn/javascript/1781968.html npm nodejs 安装过程中会自动安装npm,nodejs安装程序会在环境变量中添加两个变 ...
- NodeJS 常用模块
NodeJS 模块: n:NodeJS 版本管理/切换 参考: https://github.com/tj/n ExpressJS:Web 框架 参考: http://expressjs.com/ m ...
- angularjs, nodejs, express, gulp, karma, jasmine 前端方案整合
今年转向做前端开发,主要是做angularjs开发,期间接触了nodejs平台,从此一发不可收拾. npm丰富的插件库,express 开发框架, grunt, gulp构建工具,karma测试管理工 ...
- 前端MVC学习总结(四)——NodeJS+MongoDB+AngularJS+Bootstrap书店示例
这章的目的是为了把前面所学习的内容整合一下,这个示例完成一个简单图书管理模块,因为中间需要使用到Bootstrap这里先介绍Bootstrap. 示例名称:天狗书店 功能:完成前后端分离的图书管理功能 ...
- 前端工程筹建NodeJs+gulp+bower
1.安装nodejs nodejs 官网下载安装文件 安装完成之后,在命令窗口执行,(显示nodejs版本) 和(显示npm版本)可以使用这两个命令查看是否安装成功: node -v npm -v 2 ...
- 前端MVC学习笔记(四)——NodeJS+MongoDB+AngularJS+Bootstrap书店示例
这章的目的是为了把前面所学习的内容整合一下,这个示例完成一个简单图书管理模块,因为中间需要使用到Bootstrap这里先介绍Bootstrap. 示例名称:天狗书店 功能:完成前后端分离的图书管理功能 ...
随机推荐
- executeBatch()相关操作汇总
环境:oracle使用PreparedStatement的executeBatch方法,如果DML操作成功,返回值[-2,-2,...]an array of update counts contai ...
- JDK自带的监控分析工具JConsole
非常多开发人员认为自己懂Java编程.事实是大多数开发人员都仅仅领会到了Java平台的皮毛.所学也仅仅够应付工作. 作者将深度挖掘Java平台的核心功能.揭示一些鲜为人知的事实.帮助您解决最棘手的编程 ...
- 使用hql当异常查询:Xxx is not mapped[from Xxx where ...]
采用当今项目hql询问.出现 QingAoCenterInfo is not mapped[from QingAoCenterInfo where...] 显然地Hibernate映射关系出现了 ...
- 变化Android系统属性SystemProperties.set("sys.powerctl", "shutdown")关机分析
基本介绍: 从以前的博客中提到,我们,最后,通过关机过程变化Android关机属性(SystemProperties.java由JNI呼叫接入系统属性),当然,我们也能adb命令变化Android系统 ...
- linux 下 apache启动、停止、重启命令
原文:linux 下 apache启动.停止.重启命令 基本的操作方法: 本文假设你的apahce安装目录为/usr/local/apache2,这些方法适合任何情况 apahce启动命令: 推荐/u ...
- cocos2d-x 网络请求
[cocos2dx]rapidjson用法以及中文显示的解决方法 cocos2dx 读取json及解析 cocos2dx rapidjson 高速解析JSON --- [cocos2d-x官方文档] ...
- JS基础——数组总结
JS中数组被觉得是一种对象,慢慢的,怎么忽然感觉,JS中仅仅要能够独立出来的概念怎么都能够当成对象来解释呢?有点儿怀疑.继续学吧.先来总结一下JS中数组是怎样详细使用的. 一.创建 数组的创建在JS中 ...
- TCP/UDP简易通信
TCP/UDP简易通信框架源码,支持轻松管理多个TCP服务端(客户端).UDP客户端 目录 说明 TCP/UDP通信主要结构 管理多个Socket的解决方案 框架中TCP部分的使用 框架中UDP部分的 ...
- 【剑指offer】堆栈推弹出序列
转载请注明出处:http://blog.csdn.net/ns_code/article/details/26077863 剑指offer上的第22题,九度OJ上AC. 题目描写叙述: 输入两个整数序 ...
- 独立博客网站FansUnion.cn操作2多年的经验和教训以及未来计划
今天,我把运营了2年的独立博客站点FansUnion给"归零"了. 2012年6月.我成功搭建了自己的博客站点FansUnion.cn,这是因为自己的不懈努力和时代发展成就的 ...