socket.io带中文时客户端无法响应

记录坑了自己1个多小时的问题。

情况是:

服务端代码:

var a = {username: new Date()};
socket.emit(‘updatePositionInfo‘,a);

前端代码:

socket.on(‘updatePositionInfo‘, function (data) {
console.log(data);

console.log 结果:

上面是正常结果,如果将username 的值换成中文:

var a = {username: "大哥"};
socket.emit(‘updatePositionInfo‘,a);

前端代码不变。

console.log 结果: 空白,断点调试发现前端并没有接收到“updatePositionInfo”事件。

百思不得其解,socketio之前两个项目都用的很顺,为什么这次随便写个demo反而出了错,经过一个多小时的折磨,最后想到是不是前端js文件太旧的原因导致,因为博主是直接拷贝的上一个项目的js文件,于是去官网下载了最新的socket.io.js前端引入文件。

结果,成功!

总结:这个demo的服务端socketio是用 ‘Npm install socket.io‘ 下载的最新版本,而前端引入的socket.io文件是2016年的版本,导致不匹配,中文传输出错,全部换成最新版本即可。socket.io在node中是特殊的一种包,分为服务端和客户端两个不同的领域,建立websocket,另外还有一个服务端中的客户端“socket.io-client”包。

时间: 2024-08-05 21:27:19

socket.io带中文时客户端无法响应的相关文章

页面使用href到后台参数带中文时后台获取的値乱码

遇见这个问题时脑子是一坨浆糊,平时没关注这个细节 ,第一反应是百度,但是尝试了一些方法并不能解决问题,最终觉得自己理解的太浅,继续尝试下去没什么意义. 网上搜了一下各种编码格式的定义,对于大脑简单的我来说,这些定义太复杂.总结了一下,目前我们一般做开发时用UTF-8的格式,它属于unicode编码.要想不出现乱码现象,就必须注意一点,从前台到后台再到前台的格式保持一致. 我遇到的问题是这样的: 前台页面文件的编码格式为UTF-8,也就是 <meta charset="UTF-8"

反向Ajax,第3部分:Web服务器和Socket.IO

英文原文:Reverse Ajax, Part 3: Web servers and Socket.IO 前言 时至今日,用户期待的是可通过web访问快速.动态的应用.这一文章系列展示了如何使用反向Ajax(Reverse Ajax)技术来开发事件驱动的web应用.系列的第1部分介绍了反向Ajax.轮询(polling).流(streaming).Comet和长轮询(long polling).你已经了解了Comet是如何使用HTTP长轮询的,这是可靠地实现反向Ajax的最好方式,因为现有的所有

Socket.IO学习日志

说到学习Socket.IO,就不得不先说说WebSocket. WebSocket可以说是一种协议,它建立在无状态的HTTP协议基础之上.从字面的意思来理解,就是将TCP的Socket(套接字)应用在了HTTP中,从而使通信双方建立起一个保持在活动状态连接通道,并且是一个全双工(两个设备之间同时进行双向通信). 与Ajax不同,它并非面向请求和响应,而是可以直接通过send方法进行消息传递.WebSocket可以说是Socket.IO的一个子集,Socket.IO的底层实现其实有5种方式,Web

[Node.js] 基于Socket.IO 的私聊

原文地址:http://www.moye.me/2015/01/02/node_socket-io/ 引子 最近听到这么一个问题:Socket.IO 怎么实现私聊?换个提法:怎么定位到人(端),或者说怎么标识到连接,而不是依赖每个连接的socket.id.好问题. 在 Socket.IO Real-Time Web Application Development的指引下,形成了如下思路: 服务端在每个用户初次进入系统时,产生session_id 服务端强制用户输入昵称,与session_id对应

在线白板,基于socket.io的多人在线协作工具

首发:个人博客,更新&纠错&回复 是昨天这篇博文留的尾巴,socket.io库的使用练习,成品地址在这里. 代码已经上传到github,传送门.可以开俩浏览器看效果. 现实意义是俩人在线交流时说不明白,这时有个白板就好了,两人都能在上面写写画画,帮助沟通. 把github的readme搬过来—— 此项目用于socket.io技术的使用演示 1.安装node.js 2.在某个文件夹下执行npm install socket.io 3.将源码拷贝到该文件夹下 4.执行node main.js

跟我一起使用socket.io创建聊天应用

安装express插件 新建index.js var app = require('express')(); var http = require('http').Server(app); app.get('/', function(req, res){ res.send('<h1>Hello world</h1>'); }); http.listen(9000, function(){ console.log('listening on *:9000'); }); 使用node

使用socket.io+redis来实现基本的聊天室应用场景

本文根据socket.io与redis来实现基本的聊天室应用场景,主要表现于多个浏览器之间的信息同步和实时更新. 首先看下基本的应用场景:多个浏览器同时跟webServer连接,可实时获取webServer推送的数据,如显示某一项实时更新的数据,多个client之间同步消息等. 这里,需要使用到socket.io和redis的publish机制. 1, socket.io连接于浏览器和nodejs的http服务器之间,可用于二者之间同步数据. 2, redis是一种key-value的数据库,可

Socket.io在线聊天室

从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎.chrome浏览器就基于V8,同时打开20-30个网页都很流畅.Nodejs标准的web开发框架Express,可以帮助我们迅速建立web站点,比起PHP的开发效率更高,而且学习曲线更低.非常适合小型网站,个性化网站,我们自己的Geek网站!! 关于作者 张丹(Conan), 程序员Java,R,PHP,Java

使用socket.io和node.js搭建及时通信系统

socket.IO是一个websocket库,包括了客户端的js和服务器端的nodejs.官方地址:http://socket.io 使用socket.io和nodejs搭建websocket服务器端 socket.io不仅可以搭建客户端的websocket服务,而且支持nodejs服务器端的websocket. 下面让我来介绍一下怎么安装配置nodejs. 进入http://nodejs.org/#download下载msi文件.一直点next安装.最后文件会自动安装在C:\nodejs目录下