soket.io.js + angular.js + express.js(node.js)
soket.io.js + angular.js + express.js(node.js)

<html ng-app="demo"><head> <script src="static/angular/angular.min.js"></script> <script src="static/angular/angular-resource.min.js"></script> <script src="/socket.io/socket.io.js"></script> <script src="static/app-js/app.js"></script> <script src="static/app-js/services.js"></script> <script src="static/app-js/controllers.js"></script> </head> <body> </body> </html>

angular.module('demo', ['myApp']);
services.js 向angular中注入socket.io依赖

var app = angular.module('myApp', []);
app.factory('socket', function ($rootScope) {
var socket = io.connect();
return {
on: function (eventName, callback) {
socket.on(eventName, function () {
var args = arguments;
$rootScope.$apply(function () {
callback.apply(socket, args);
});
});
},
emit: function (eventName, data, callback) {
socket.emit(eventName, data, function () {
var args = arguments;
$rootScope.$apply(function () {
if (callback) {
callback.apply(socket, args);
}
});
})
}
};
});

controller.js 可以在controller里面直接使用socket对象了!目的达到

function SocketCtrl($scope, socket) {
socket.on('client-rev', function (data) {
$scope.server_data = data;
});
socket.broadcast.emit('client-send', {data: {test:'test'} });
}


var express = require('express')
,util = require('util')
,path = require('path');
var app = express()
, http = require('http')
, server = http.createServer(app)
, io = require('socket.io').listen(server);
// Configuration
app.configure(function(){
app.use(express.static(path.join(__dirname, 'web'))); //work with livereload
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.enable('strit routing');
});
server.listen(config.SERVER_PORT);
console.info(util.format("Express server listening on port %s in %s mode",
config.SERVER_PORT, app.settings.env));
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
io.sockets.on('connection', function (socket) {
socket.emit('client-rev', { hello: 'world' });
socket.on('client-send', function (data) {
console.log(data);
});
});

注意原来app.listen, 这里要改为server.listen。 我当时就是没注意这点,导致服务端一度无法接收到客户端发送的socket请求,原因是请求全被express接管了,没用通过socket.ios。
soket.io.js + angular.js + express.js(node.js)的更多相关文章
- 现在学习 JavaScript 的哪种技术更好:Angular、jQuery 还是 Node.js?(转)
本文选自<开发者头条>1 月 7 日最受欢迎文章 Top 3,感谢作者 @WEB资源网 分享. 欢迎分享:http://toutiao.io/contribute 这是一个发布在 Quor ...
- io.js - 兼容 NPM 平台的 Node.js 新分支
io.js(JavaScript I/O)是兼容 NPM 平台的 Node.js 新分支,由 Node.js 的核心开发者在 Node.js 的基础上,引入更多的 ES6 特性,它的目的是提供更快的和 ...
- node.js day01学习笔记:认识node.js
Node.js(JavaScript,everywhere) 1.Node.js 介绍 1.1. 为什么要学习Node.js 企业需求 + 具有服务端开发经验更好 + front-end + back ...
- [Node.js] 01 - How to learn node.js
基本概念 链接:https://www.zhihu.com/question/47244505/answer/105026648 链接:How to decide when to use Node.j ...
- 前端(Node.js)(3)-- Node.js实战项目开发:“技术问答”
1.Web 与 Node.js 相关技术介绍 1.1.Web应用的基本组件 web应用的三大部分 brower(GUI)<==>webserver(business logic.data ...
- node.js学习(二)--Node.js控制台(REPL)&&Node.js的基础和语法
1.1.2 Node.js控制台(REPL) Node.js也有自己的虚拟的运行环境:REPL. 我们可以使用它来执行任何的Node.js或者javascript代码.还可以引入模块和使用文件系统. ...
- Edge.js:让.NET和Node.js代码比翼齐飞
通过Edge.js项目,你可以在一个进程中同时运行Node.js和.NET代码.在本文中,我将会论述这个项目背后的动机,并描述Edge.js提供的基本机制.随后将探讨一些Edge.js应用场景,它在这 ...
- Express入门( node.js Web应用框架 )
运用Express框架构建简单的NodeJS应用 Start 确认安装了NodeJS之后(最新的Node安装好后NPM也会自带安装了),npm可理解为nodejs的一个工具包.可通过查看版本来检测是 ...
- Node.js 学习(五)Node.js 事件循环
Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高. Node.js 的每一个 API 都是异步的,并作为一个独立线程运行,使用异步函数调用,并处理并发. Node.j ...
- 深入浅出Node.js(一) - 初识Node.js
1.Node.js将Javascript解决不确定性所使用的事件驱动方式引入了进来,因为JS是一门事件驱动的语言,旨在能够对外界的事件作出响应; 2.Node.js中,所有的有关异步的操作,都在同步操 ...
随机推荐
- Redhat Linux下的python版本号升级
运行#Python与#python -V,看到版本是2.4.3,非常老了,并且之前写的都是跑在python3.X上面的,3.X和2.X有非常多不同, 有兴趣的朋友能够參考下这篇文章: http:// ...
- ASP.NET 5- 1
ASP.NET 5 入门(1) - 建立和开发ASP.NET 5 项目 ASP.NET入门(1) - 建立和开发ASP.NET 5 项目 建立项目 首先,目前只有VS 2015支持开发最新的ASP ...
- HDOJ 3518 Boring counting
SAM基本操作 拓扑寻求每个节点 最左边的出现left,最右边的出现right,已经有几个num ...... 对于每个出现两次以上的节点.对其所相应的一串子串的长度范围 [fa->len+1 ...
- C++学习笔记32 断言函数
首先,让我们来看看百度百科上"断言函数"定义说明: 1定义fr=aladdin#" class="nslog:1019" title="编辑 ...
- 关于fork()函数的作用
(1) 先看一个实例: #include <unistd.h>; #include <sys/types.h>; main () { pid_t pi ...
- IOS中 类扩展 xib
一.类扩展(class extension,匿名分类) .格式 @interface 类名 () { // 成员变量... } // 方法声明... @end .作用 > 写在.m文件中 > ...
- C# 通过ImportNode AppendChild方法合并XmlDocument,XML转为DataTable
var doc1 = new XmlDocument(); var doc2 = new XmlDocument(); XmlNode root1 = doc1.DocumentElement; do ...
- jQuery 添加 删除 改动select option
jQuery获取Select选择的Text和Value: 1. var checkText=jQuery("#select_id").find("option:selec ...
- WebApiContrib
https://github.com/WebApiContrib ASP.NET Web API and Protocol Buffers Protocol Buffers are a super e ...
- effective C++ 札记 规定17 在单独的陈述newed对象插入智能指针
// Test.cpp : 自定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include &l ...