express+socket.io完成客户端与服务器的通信
来源:互联网 发布:9院13所 知乎 编辑:程序博客网 时间:2024/06/05 02:59
在使用socket.io完成客户端与服务器通信时,客户端出现以下错误:
node.js app can't find socket.io。
由于本人是新手,所以调试花了一天的功夫,还在最后还是出来了。
出现这个错误,首先要确定服务器端没有问题。服务器端出现:info - socket.io started
表示服务器端没有问题,否则就是服务器端的问题。我的问题就是出现在服务器,而我却在客户端花了一天功夫,真是想屎的心情都有了。
首先要确认一点客户端 <script type="text/javascript" src="socket.io/socket.io.js"></script> 的写法是没有问题的。如果报错上述错误,则要么就是socket.io安装出来问题,确认使用
npm
install
socket.io安装。
要么就是服务器端的问题。只要仔细检查这两点。可以参考http://socket.io/#how-to-use。
当服务器出现
warn - error raised: Error: listen EADDRINUSE
错误时,多半是因为的使用的端口号已经被占用,例如我的服务器本来监听80端口,但是出现上述错误,将其改为8000后服务器正常。
附个人程序:
服务端
var express=require('express');var app = express() , server = require('http').createServer(app) , io = require('socket.io').listen(server);server.listen(8080);//启动 web服务,监听8080端口 app.use(express.static(__dirname + '/demo')); //设置工程目录,以当前目录下的demo目录为web应用根目录 app.get('/', function (req, res) {//设置默认访问页面 res.sendfile(__dirname + '/demo/demo.html');}); //添加监听,相应前台请求 io.sockets.on('connection', function(client){ //查询数据 client.on('getData', function () { //模拟数据 var result = { nodes: [ { id: 'from', name: 'From', location: { x: 100, y: 100 } }, { id: 'to', name: 'To', location: { x: 200, y: 200 } } ], links: [ { id: 'from-to', name: 'Hello TWaver HTML5', from: 'from', to: 'to' } ] }; //返回数据 client.emit('getData', result); }); });
客户端:
清单1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>socket.io</title> <!--引用Socket.IO js库--> <script type="text/javascript" src="socket.io/socket.io.js"></script> <script type="text/javascript" src="./ws.js"></script> </head> <body onload="init()"> <div id="main"> </div> </body> </html>清单2
/*function getMessage(){var ws1=new WebSocket("ws:www.runwdr.com:4504");ws1.onmessage = printMess;}function printMess(event){alert(event.data);}*///定义获取数据消息key var GET_DATA = 'getData'; //WebSockets引用 var socket; function init() { //创建WebSockets socket = io.connect("http://localhost:8080"); //响应getData消息请求 socket.on(GET_DATA, onGetData); //发送getData消息请求 socket.emit(GET_DATA); } //getData消息处理方法 function onGetData(data) { console.log(data); document.getElementById('main').innerHTML = JSON.stringify(data); }
本文参考:http://www.html5china.com/HTML5features/WebSocket/20120513_3658.html
- express+socket.io完成客户端与服务器的通信
- C# Socket通信的服务器与客户端的通信
- Socket+NIO实现客户端与服务器的通信的Demo
- Linux服务器与JAVA客户端(android)的socket通信
- java版客户端与服务器的socket通信以及上传下载
- C# 使用Socket实现服务器与客户端的通信
- Linux socket编程(二) 服务器与客户端的通信
- Linux socket编程(二) 服务器与客户端的通信
- 【C#】Socket客户端与服务器的简单通信
- delphi(客户端) socket 与 PHP_socket(服务器) 通信的例子
- 【C#】Socket客户端与服务器的简单通信
- Socket实现Android客户端与服务器的通信
- Linux socket编程(二) 服务器与客户端的通信
- Linux socket编程(二) 服务器与客户端的通信
- C#做服务器,Android做客户端,完成Socket通信
- Android客户端通过socket与服务器通信
- Java Socket编程(服务器与客户端通信)
- Android客户端通过socket与服务器通信
- Java中getResourceAsStream的用法
- Xcode中使用git来管理项目
- 分支限界与回溯法对比
- Uninstall Webroot SecureAnywhere Complete with WindowsUninstaller.Org Removal Tips
- VS系列编译问题总结 无法打开预编译头 Debug\XXX.pch 无法解析的外部符号....
- express+socket.io完成客户端与服务器的通信
- 好玩的东西-emit
- GetSystemMetrics()函数的用法
- 服务员就结账了的p8u8
- JSTL标签库
- web push pull technology
- C#如何写DBHelper 类(数据库连接和操作)
- 6410之次设备号的作用
- 各类IT编程视频教程下载网址大全